我正在尝试调用我在地图文件夹中的route.ts文件中定义的API,如图所示,但是调用它会返回405方法不允许的响应,而且我似乎无法弄清楚为什么会发生这种情况寻找一个小时后。我相信我有正确的文件夹结构,但我可能缺少一些东西,因此向社区寻求支持。请指导我解决此问题,如果需要额外信息,请告诉我。
文件夹结构:
用于测试的虚拟实现:
import { NextApiRequest } from "next";
import { NextResponse } from "next/server";
export default async function GET(req: NextApiRequest) {
try {
return NextResponse.json({ messsage: "Hello World" }, {status: 200});
} catch (error) {
console.log(error);
return NextResponse.json({ error: error }, {status: 500});
}
}
编辑 - 我正在使用 clerk 进行身份验证,以下是其中间件实现:
import { authMiddleware } from "@clerk/nextjs";
export default authMiddleware({
publicRoutes: ["/"]
});
export const config = {
matcher: ['/((?!.+\\.[\\w]+$|_next).*)', '/', '/(api|trpc)(.*)'],
};
我在各种文章和其他 Stack Overflow 问题中搜索了它,但找不到任何正确的答案。
问题出在 Clerk authMiddleware 中。
要忽略来自 auth 的路由,可以修改中间件文件,如下所示:
export default authMiddleware({
publicRoutes: ['/'],
ignoredRoutes: ['/api/(.*)'],
});