swf*_*u69 3 javascript rest node.js next.js
我正在为 Next.js 应用程序开发一个小型 REST API。如果我将我的放在route.tsrootDir -> app -> api -> hello -> route.ts 中,如下所示,那么它可以工作:
//route.ts
export async function GET(request: Request) {
return new Response('Hello, Next.js!')
}
Run Code Online (Sandbox Code Playgroud)
我可以通过 Postman 向 localhost:3000/api/hello 发出成功的 GET 请求。
我现在将代码更改为以下内容:
import { NextApiRequest, NextApiResponse } from "next";
export async function GET(request: NextApiRequest, response: NextApiResponse) {
return response.json({ message: "Hello, Next.js!" });
}
Run Code Online (Sandbox Code Playgroud)
现在它失败了,我收到错误消息:
error TypeError: response.json is not a function
Run Code Online (Sandbox Code Playgroud)
该问题是已知的,但升级到最新的 lts 或最新的节点版本并不能解决我的问题: https: //github.com/vercel/next.js/issues/48524。
虽然您的尝试可以在 Next.js 的目录中进行pages,但这是设置路由的初始方法,对于较新的app文件夹,您需要使用NextResponse来自 的对象next/server,正如您可以在文档中阅读的那样:
import { NextResponse } from "next/server";
export async function GET(request: Request) {
return NextResponse.json({ messsage: "Hello World" });
}
Run Code Online (Sandbox Code Playgroud)