You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next 13 Route Handler无法从请求体获取数据(app/api/auth)

解决Next.js App Router中POST请求体为Readable Stream的问题

在Next.js的App Router(实验性app目录)中,API路由的Request对象遵循Web标准,req.body本身就是Readable Stream,无法直接读取属性,必须手动解析请求体。针对你的场景,修改服务器端代码即可解决:

修正后的服务器端代码

export async function POST(req: NextRequest) {
  // 解析JSON格式的请求体(异步操作,需加await)
  const body = await req.json();
  console.log(body); // 现在能拿到完整的请求体对象

  // 返回JSON格式的响应
  return new Response(JSON.stringify(body), {
    status: 200,
    headers: {
      "Content-Type": "application/json",
    },
  });
}

关键修改点说明

  • 解析请求体:使用await req.json()异步解析JSON格式的请求体,这是Web标准Request对象的内置方法,对应你前端设置的Content-Type: application/json。
  • 避免重复读取流:Readable Stream只能被读取一次,所以解析后不能再直接返回req.body,需要用解析后的body对象重新生成响应内容。
  • 响应格式匹配:返回响应时明确设置Content-Type: application/json,确保前端res.json()能正确解析。

额外注意事项

如果你的请求体是表单数据(multipart/form-data),则需要用await req.formData()解析;如果是纯文本,用await req.text(),根据实际Content-Type选择对应的解析方法。

内容的提问来源于stack exchange,提问作者Dajeki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:07:09