如何在nodejs Express服务中的查询参数中发送整数

kis*_*ore 23 node.js express

我的盒子上运行了一个nodejs express web服务器.我想发送一个get请求以及查询参数.有没有办法找到每个查询参数的类型,如int,bool,string.我不知道查询参数键值.我在服务器端解释为键值对的json对象.

Pau*_*gel 30

你不能,因为HTTP没有类型的概念:一切都是字符串,包括查询字符串参数.

您需要做的是使用该req.query对象并使用以下方法手动将字符串转换为整数parseInt():

req.query.someProperty = parseInt(req.query.someProperty);
Run Code Online (Sandbox Code Playgroud)

  • 我们遇到了类似的需求,需要在 get 请求中发送 JSON。我们最终使用 POST 代替......是的,POST 听起来很奇怪做一个 GET 但这是绕过它的一种方法。 (2认同)

par*_*ezp 9

你也可以试试

var someProperty = (+req.query.someProperty);
Run Code Online (Sandbox Code Playgroud)

这对我有用!


Ror*_*mpf 7

正如Paul Mougel所提到的,http查询和路径变量是字符串.但是,这些可以在处理之前被拦截和修改.我是这样做的:

var convertMembershipTypeToInt = function (req, res, next) {
  req.params.membershipType = parseInt(req.params.membershipType);
  next();
};
Run Code Online (Sandbox Code Playgroud)

之前:

router.get('/api/:membershipType(\\d+)/', api.membershipType);
Run Code Online (Sandbox Code Playgroud)

后:

router.get('/api/:membershipType(\\d+)/', convertMembershipTypeToInt, api.membershipType);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,req.params.membershipType将从字符串转换为整数.请注意正则表达式,以确保只将整数传递给转换器.