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

NextJS API Route无法识别解析JSON:内部POST请求解析问题排查

问题原因与解决方案

你的问题出在重复解析请求体:

Next.js Pages Router 的 API 路由会自动识别请求头中的 Content-Type: application/json,并将请求体直接解析为 JavaScript 对象存入 req.body。这时候你再对 req.body 执行 JSON.parse(),相当于把已经是对象的 req.body 转成了字符串 "[object Object]",而这个字符串并不是合法的 JSON 格式,所以抛出了语法错误。

修正后的 API 代码

export default async function handler(req: NextApiRequest, res: NextApiResponse): Promise<any> {
    // 直接使用已解析的 req.body,无需再次 parse
    const data = req.body;
    console.log(data); // 会输出 { key: 'test123' }
    // 记得返回响应,避免请求挂起
    res.status(200).json({ received: data });
}

额外说明

如果遇到 Next.js 没有自动解析的极端情况(比如请求头设置有误),可以手动读取并解析,但你的代码中请求头设置正确,完全不需要这一步。手动解析的写法参考(仅作了解):

export default async function handler(req: NextApiRequest, res: NextApiResponse): Promise<any> {
    // 手动读取请求体
    const body = await new Promise<string>((resolve) => {
        let data = '';
        req.on('data', chunk => data += chunk);
        req.on('end', () => resolve(data));
    });
    const data = JSON.parse(body);
    console.log(data);
    res.status(200).json({ received: data });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:22:16