簡體   English   中英

表達身體解析器 bigInteger

[英]express body-parser bigInteger

我創建了一個基於 node/express 的 api。 我正在使用 body-parser 來解析我的請求。

我的問題是我在請求正文中得到了一個很大的 integer:

759982437118771 23

解析我的 integer 后變成:

759982437118771 20

我怎樣才能 go 解決這個問題?

似乎是人體分析器錯誤, 對於大於53位的整數 ,它將丟失幾位數

75998243711877123的正確二進制表示為: 100001110000000000000000000000000000000000000000000000011

但是正文解析器丟失了尾部2位11 ,您的值變成了100001110000000000000000000000000000000000000000000000000

這是75998243711877120

將 bigInt 作為字符串發送這實際上是 JSON.parse 的問題它不支持大 int 解析所以這就是最后一位被刪除的原因

嘗試將您的大整數作為字符串發送

data = "75998243711877123"

我有同樣的問題。

有解決方案,對我有用

需要額外安裝https://www.npmjs.com/package/json-bigint

代碼:

let bodyParser = require("body-parser");

const JSONbigString = require("json-bigint")({ storeAsString: true });

app.use(
  bodyParser.json({
    limit: "10mb",
    extended: true,
    verify: (req, res, buf, encoding) => {
      if (
        req.url.search("/public/api/users") >=
        0
      ) {
        try {
          req.rawBody = JSONbigString.parse(buf.toString());
        } catch (e) {
          try {
            req.rawBody = JSON.parse(buf.toString());
          } catch (e) {
            req.rawBody = JSON.parse("{}");
          }
        }
      }
    },
  })
);

app.post(
  "/public/api/users",
  async (req, res) => {
    let data = req.rawBody;

    res.json(data);
    return;
  }
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM