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

时间:2013-12-03 16:01:14

标签: node.js express

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

5 个答案:

答案 0 :(得分:27)

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

您需要做的是使用req.query object并使用parseInt()手动将字符串转换为整数:

req.query.someProperty = parseInt(req.query.someProperty);

答案 1 :(得分:9)

您也可以尝试

var someProperty = (+req.query.someProperty);

这对我有用!

答案 2 :(得分:6)

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

var convertMembershipTypeToInt = function (req, res, next) {
  req.params.membershipType = parseInt(req.params.membershipType);
  next();
};

之前:

router.get('/api/:membershipType(\\d+)/', api.membershipType);

后:

router.get('/api/:membershipType(\\d+)/', convertMembershipTypeToInt, api.membershipType);

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

答案 3 :(得分:0)

let originalType = JSON.parse(req.query.someproperty);

在 HTTP 中,无论您最初发送的是 [0,1] 还是 5"hello",查询字符串参数都被视为字符串。 所以我们必须使用json解析来解析它。

答案 4 :(得分:-1)

对于那些阅读此内容的人来说,这可能会有任何帮助,但我喜欢使用箭头功能来保持我的代码干净。因为我所做的只是更改一个变量,所以只需要一行代码:

module.exports = function(repo){

  router.route('/:id,
  (req, res, next) => { req.params.id = parseInt(req.params.id); next(); })
    .get(repo.getById)
    .delete(repo.deleteById)
    .put(repo.updateById);
}