Express.JS url参数未被解析

时间:2013-08-20 13:47:52

标签: node.js express routes

我配置了以下路线

app.put('/v1/users/:uid', function(req, res){
            res.send(req.route);
        });

http://localhost:3000/v1/users/blablabla

发送PUT请求时

我得到以下输出

{
   "path": "/v1/users/:uid",
   "method": "put",
   "callbacks": [
       null
   ],
   "keys": [
       {
           "name": "uid",
           "optional": false
       }
   ],
   "regexp": {},
   "params": []
}

正如您所见, params 数组似乎是空的,而不是具有值#34; blablabla"。但是" uid"键出现在键中,我不知道该怎么做。

感谢任何建议。

2 个答案:

答案 0 :(得分:1)

好的,诀窍是Express使用a sparse array to parse the params

当您将其传递给req.send时,数组将使用JSON.stringify进行转换。以下是JS shell中发生的事情:

> var params = [];
> params['uid'] = 1;
> params;
[ uid: 1 ]
> JSON.stringify(params);
'[]'

正在发生的事情是,向数组添加非数字不会改变其长度:

> params.length
0

因此JSON.stringify忽略了新值。

答案 1 :(得分:0)

这是我见过的最奇怪的事情。

在执行console.log(req.params)console.log(req.route.params)时,我得到一个空数组响应([])。

但是在做console.log(req.params.uid)时,我得到了价值!这非常奇怪,但嘿,它的工作原理:)

干杯。