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

如何在Next.js 13路由处理器中解析POST请求的ReadableStream?

问题解决:Next.js 13路由处理器解析POST请求体错误

核心问题

你错误地直接访问req.body(类型为ReadableStream<Uint8Array> | null),并尝试在该流对象上调用json()方法——但json()是NextRequest实例的方法,并非req.body的方法,这才导致了类型错误。

修正后的POST请求处理器代码

import { NextRequest, NextResponse } from 'next/server';
import prisma from '@/lib/prisma'; // 替换为你的Prisma客户端实际路径

// 确保该接口与请求体、Prisma模型字段匹配
interface clientToCreate {
  // 示例字段,根据你的实际模型定义修改
  name: string;
  email: string;
}

export async function POST(req: NextRequest) {
  // 调用NextRequest实例的json()方法解析请求体
  const clientData: clientToCreate = await req.json();

  try {
    const data = await prisma.client.create({
      data: clientData,
    });
    return NextResponse.json(data);
  } catch (e) {
    console.error(e);
    // 自定义错误响应比NextResponse.error()更清晰
    return NextResponse.json({ error: '客户端创建失败' }, { status: 500 });
  }
}

额外注意事项

  • 确保clientToCreate接口的字段与PrismaClient模型的可创建字段完全对应,避免类型不兼容问题。
  • 你的请求构造代码和Postman的请求头设置(Content-Type: application/json)是正确的,无需修改。
  • NextResponse.error()默认返回500状态,但自定义JSON响应能更明确地告知前端错误原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:22:03