NextJS API路由无法接收表单提交数据问题排查
问题原因与解决方案
我来帮你快速定位并解决这两个问题:
1. API路由参数顺序完全搞反了!
Next.js 的 API 路由处理函数,参数顺序是**(req, res)**(请求对象在前,响应对象在后),但你写的是:
export default async function handler(res, req) { ... }
这就导致你代码里的 req 其实是响应对象(res),而真正的请求对象被你错误命名成了 res,自然拿不到 req.body,打印出来就是 undefined。
2. API路由没有返回响应
Next.js 要求所有API路由必须给客户端发送响应,否则请求会一直处于挂起状态,就会出现你看到的「API resolved without sending a response」警告。你当前的代码里只有console.log,没有任何返回响应的逻辑。
修正后的 /api/checkout.js 代码
export default async function handler(req, res) { try { // 现在能正常拿到请求体了 console.log(req.body); // 给客户端返回成功响应 res.status(200).json({ message: "数据接收成功", data: req.body }); } catch (error) { // 捕获错误并返回错误响应 res.status(500).json({ message: "服务器错误", error: error.message }); } }
另外再确认下:你前端的请求逻辑是没问题的——已经设置了正确的Content-Type: application/json,并且用JSON.stringify()序列化了请求体,这部分不需要修改。
内容的提问来源于stack exchange,提问作者ElendilTheTall
相关产品推荐
相关产品推荐

