Eze*_*cho 14 javascript reactjs next.js prisma
我正在努力解决 Next.js 13 的app路由问题。当我尝试访问时,例如从 Postmann 访问时,它总是给出 404 Not Found。
我有这个文件结构:
例如,我的 API 文件之一是:
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export default async function all(req, res) {
if (req.method !== 'GET') {
return res.status(405).json({ error: 'Method not allowed' });
}
try {
// Get all admins using Prisma
const admins = await prisma.admin.findMany();
return res.status(200).json(admins);
}
catch (error) {
return res.status(500).json({ error: 'Failed to get admins' });
}
}
Run Code Online (Sandbox Code Playgroud)
当我发送时,GET localhost:3000/api/admin/all它总是以 404 响应。无法找到错误在哪里。
我尝试了其他文件或文件夹命名。从我自己的应用程序调用,使用curl命令,或使用Postman。我的其他 API 路由也给出相同的 404。
You*_*mar 21
API 路由应位于名为route.js. 意思app/api/admin/all.js应该是app/api/admin/route.js,对应的URL是/api/admin。另外,里面的函数应该使用特定的定义:
export async function GET(request) {}
Run Code Online (Sandbox Code Playgroud)
GET可以替换为POST, PUT,PATCH等。在您的情况下,它将是:
// Notice from where NextResponse is imported:
import { NextResponse } from "next/server";
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
// Notice the funciton definiton:
export async function GET(req) {
return NextResponse.json(
{ error: "Method not allowed" },
{
status: 405
}
);
}
// Notice the funciton definiton:
export async function POST(req) {
try {
// Get all admins using Prisma
const admins = await prisma.admin.findMany();
return NextResponse.json(admins, {
status: 200,
});
} catch (error) {
return NextResponse.json(
{ error: "Failed to get admins" },
{
status: 500,
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20212 次 |
| 最近记录: |