首页 > 解决方案 > bodyparser 将浮点数(0.0)更改为整数(0)?解决方案是什么?

问题描述

X 服务器将 post req 发送到 Y 服务器。x 服务器正文数据 {"number":0.0},但是当在 y 服务器 (nodejs) 中接收它时,它在 req.body 标记中更改为 {"number":0}。每个请求通过 bodyParser.json()

为什么它正在改变?它应该得到 x 服务器发布的内容吗?帮帮我。

尝试使用 bodyParser.raw(),bodyParser.text() 不提供 body 标签。

标签: node.jsexpressbody-parser

解决方案


如果您需要在原始请求正文上计算 HMAC,则不应该解析它,或者至少首先获取原始请求正文,计算 HMAC,然后解析它。

要执行后者,您可以使用express.json'sverify选项:

app.use(express.json({
  verify(req, res, buf, encoding) {
    req._hmac = hmac(buf);
  }
}));

这将使用一个调用函数hmac来计算请求正文上的 HMAC(作为buf参数中的 Buffer 传递)。然后它将继续将请求正文解析为 JSON。

注意事项:

  • 它将为每个通过请求正文的请求计算 HMAC;
  • 如果计算 HMAC 是异步的,它将不起作用。

不过,这两个问题都相对容易解决。


推荐阅读