Next.js13+TypeScript+Prisma中PUT请求request.body返回ReadableStream问题排查
解决Next.js 13 PUT接口无法解析request.body的问题
问题原因
你混淆了Next.js Pages Router和App Router的请求对象API:
- 在Pages Router中,
NextApiRequest的body会自动解析为JSON/表单数据; - 但在Next.js 13+的App Router中,路由处理函数接收的是Web标准的Request对象,它的
body是一个ReadableStream,必须手动调用解析方法才能获取实际数据。
解决方案
修改代码,先通过request.json()解析请求体,再解构所需字段:
export async function PUT(request: Request) { const id = "1"; // 先将ReadableStream解析为JSON对象 const body = await request.json(); // 从解析后的body中解构需要的字段 const { name, description, price, image, category, tags, link, variantType, sizes, allOfSizes, status, rating, numberOfReviews } = body; // 后续代码省略 }
额外说明
- GET方法正常是因为GET请求通常不带请求体,不会触发这个解析问题;
- 如果你是在Pages Router中开发接口(文件放在
pages/api目录下),可以继续使用NextApiRequest,此时body会自动解析,无需手动处理。
内容的提问来源于stack exchange,提问作者Dario Coronel
相关产品推荐
相关产品推荐

