【问题标题】:Next.js API Route mysteriously modifying JSON payloadNext.js API Route 神秘地修改 JSON 有效负载
【发布时间】:2022-01-30 08:36:56
【问题描述】:

由于某种原因,当我通过 Postman 将 JSON 格式的数据作为原始文本发送时,我没有任何问题。当我通过 Postman 发送与原始 JSON 完全相同的数据时(区别应该只是 content-type 标头是 application/json 而不是 application/text),我的双引号被剥离,字符串切换到单引号.

原始有效负载示例(邮递员发送此):

{ "id": "blahblahbloo", "time": "hammer" }

意外转换(NextJS 收到这个):

{ id: 'blahblahbloo', time: 'hammer' }

需要说明的是,当我通过 Postman 作为原始文本 发送时,我得到了完全相同的结果(这是我所期望的):

// Postman sends this and NextJs receives this when set to raw text    
{ "id": "blahblahbloo", "time": "hammer" }

我没有明确地做任何事情来读取content-type 并转换数据。我遇到此问题的端点是 NextJS 动态路由:https://nextjs.org/docs/api-routes/dynamic-api-routes

【问题讨论】:

    标签: json next.js postman mime-types double-quotes


    【解决方案1】:

    Next.js API 路由有一个内置的中间件,它将根据其 Content-Type 标头解析传入请求的正文。

    来自API Middlewares 文档(重点是我的):

    API 路由提供内置的中间件来解析传入的 请求(req)。这些中间件是:

    • req.cookies - 包含请求发送的 cookie 的对象。默认为{}
    • req.query - 包含查询字符串的对象。默认为{}
    • req.body - 包含由content-type 解析的正文的对象,如果没有发送正文,则为null

    application/json 发送有效负载将使API 路由将req.body 转换为JavaScript 对象,从而去除双引号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多