如何在Next.js中通过API路由发送JSON响应?

xv8emn3q  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(156)

我正在为Next.js应用开发一个小型REST API。如果我把我的route.ts放在rootDir -> app -> API -> hello -> route.ts中,看起来像这样,那么它就可以工作了:

//route.ts
export async function GET(request: Request) {
  return new Response('Hello, Next.js!')
}

字符串
我可以通过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!" });
}


现在它失败了,我得到错误消息:

error TypeError: response.json is not a function


问题已知,但升级到最新的lts或最新的node版本并不能解决我的问题:https://github.com/vercel/next.js/issues/48524的数据。

2w2cym1i

2w2cym1i1#

虽然您的尝试将在Next.js的pages目录中工作,但设置路由的初始方式,对于较新的app文件夹,您需要使用next/server中的NextResponse对象,正如您在doc上所读到的那样:

import { NextResponse } from "next/server";

export async function GET(request: Request) {
  return NextResponse.json({ messsage: "Hello World" });
}

字符串

相关问题