App 路由器中的 Next.js 14 API 路由返回 401 未经授权作为响应

问题描述 投票:0回答:1

我正在尝试调用我在地图文件夹中的route.ts文件中定义的API,如图所示,但是调用它会返回405方法不允许的响应,而且我似乎无法弄清楚为什么会发生这种情况寻找一个小时后。我相信我有正确的文件夹结构,但我可能缺少一些东西,因此向社区寻求支持。请指导我解决此问题,如果需要额外信息,请告诉我。

文件夹结构:

api route folder structure

用于测试的虚拟实现:

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});
    }
}

回复如下: null response

编辑 - 我正在使用 clerk 进行身份验证,以下是其中间件实现:

import { authMiddleware } from "@clerk/nextjs";
 
export default authMiddleware({
  publicRoutes: ["/"]
});
 
export const config = {
  matcher: ['/((?!.+\\.[\\w]+$|_next).*)', '/', '/(api|trpc)(.*)'],
};

我在各种文章和其他 Stack Overflow 问题中搜索了它,但找不到任何正确的答案。

javascript next.js app-router
1个回答
0
投票

问题出在 Clerk authMiddleware 中。

要忽略来自 auth 的路由,可以修改中间件文件,如下所示:

export default authMiddleware({
  publicRoutes: ['/'],
  ignoredRoutes: ['/api/(.*)'],
});
© www.soinside.com 2019 - 2024. All rights reserved.