未解析Nextjs API POST请求主体

时间:2020-09-16 15:48:48

标签: reactjs next.js

我已经在nextjs中设置了一个简单的api路由,并尝试解析正文以获取发布请求数据,但是当我使用语法console.log(req.body.name)

时得到“未定义”

如果我将请求正文console.log(req.body)输出到控制台,则得到的内容类似于纯字符串:

------WebKitFormBoundaryMJBujN4oNXLxcU96
Content-Disposition: form-data; name="name"

bilbo.com
------WebKitFormBoundaryMJBujN4oNXLxcU96
Content-Disposition: form-data; name="price"

2995
------WebKitFormBoundaryMJBujN4oNXLxcU96--

这是函数:

export default (req, res) => {
    console.log(req.method);
    console.log(req.body);
    console.log(req.body.name);
    res.status(200).json( { items: [ { req : req.method } ] } )
}

以及请求标头中的数据:

enter image description here

1 个答案:

答案 0 :(得分:0)

这个问题已经很老了,但如果其他人碰巧到了这里:

根据documentation

<块引用>

req.body - 包含按内容类型解析的正文的对象,如果没有发送正文,则为 null

这意味着如果要将 req.body 解析为 JSON,则必须在请求标头中设置 'Content-Type': 'application/json' 标头:

fetch(url, {
    body,
    method,
    headers: new Headers({
      'Content-Type': 'application/json',
      Accept: 'application/json',
    }),
  })