由于某种原因,当我通过Postman发送JSON格式的数据作为原始文本时,我没有遇到任何问题。当我通过Postman发送完全相同的数据作为原始JSON时(区别应该只是content-type
头是application/json
而不是application/text
),我最终会去掉双引号,字符串切换为单引号。
原始有效负载示例( Postman发送this):
{ "id": "blahblahbloo", "time": "hammer" }
非预期的转换(NextJS接收this):
{ id: 'blahblahbloo', time: 'hammer' }
需要说明的是,当我通过Postman发送原始文本时,我得到的是完全相同的结果(这是我所期望的):
// Postman sends this and NextJs receives this when set to raw text
{ "id": "blahblahbloo", "time": "hammer" }
我没有明确地执行任何操作来读取content-type
和转换数据。https://nextjs.org/docs/api-routes/dynamic-api-routes
1条答案
按热度按时间oknwwptz1#
Next.js API路由有一个内置的
bodyParser
中间件,它将根据传入请求的Content-Type
头解析请求的主体。从API Middlewares文档(重点是我的):
API路由提供了内置的中间件,用于解析传入的请求(
req
)。这些中间件包括:req.cookies
-包含请求发送的Cookie的对象。默认值为{}
req.query
-包含查询字符串的对象。默认值为{}
*
req.body
-包含由content-type
分析的正文的对象,如果未发送正文,则为null
将有效负载作为
application/json
发送会让API路由将req.body
转换为JavaScript对象,因此会去掉双引号。虽然
bodyParser
中间件在默认情况下是自动启用的,但如果您想自己使用主体,可以禁用它。