express 从角度 POST 请求获取所有值作为字符串

问题描述 投票:0回答:1

我有一个以下简单的代码,可以使用 Express 向服务器发送 POST 请求:

$http.post('/blah', {
    boolean: true,
    stringBoolean: 'true',
    number: 213,
    stringNubmer: '44444444',
    string: 'adssd',
    arrayNumber: [1, 2, 3, 4],
    arrayBoolean: [true, false, "true", "false"],
});

服务器端的这些行:

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.post('/blah', (req, res)=>{
    console.log(req.body)
})

客户端发送请求后控制台中的输出(在 Chrome 和 Firefox 上测试)将包含所有值作为字符串:

{ boolean: 'true',
  stringBoolean: 'true',
  number: '213',
  stringNubmer: '44444444',
  string: 'adssd',
  arrayNumber: [ '1', '2', '3', '4' ],
  arrayBoolean: [ 'true', 'false', 'true', 'false' ] }

然后我使用 Postman 将相同的数据结构发送到服务器:

{
    "boolean": true,
    "stringBoolean": "true",
    "number": 213,
    "stringNubmer": "44444444",
    "string": "adssd",
    "arrayNumber": [1, 2, 3, 4],
    "arrayBoolean": [true, false, "true", "false"]
}

但是这次我在控制台中有数字和布尔值:

{ boolean: true,
  stringBoolean: 'true',
  number: 213,
  stringNubmer: '44444444',
  string: 'adssd',
  arrayNumber: [ 1, 2, 3, 4 ],
  arrayBoolean: [ true, false, 'true', 'false' ] }

看起来像是在幕后做一些约定。我怎样才能避免这种情况并获得发送到服务器的正确值类型?

更新: 在 Chrome 控制台中,我可以看到原始格式的请求正文,如下所示:

这意味着每个值始终是字符串,我必须在服务器端手动将其转换为适当的类型。这样的追问对吗?这里有哪些好的做法?

angularjs express
1个回答
1
投票

它在内部使用

JSON.stringify()
。使用
JSON.parse()

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.