我尝试使用restify将值传递作为URL参数读取。该值从使用RESTsharp的C#代码传递。我可以看到URL字符串中的值很好,但是当我尝试访问它时,我得到了未定义。这是因为request.params不包含我传递的参数。相反,它包含我作为请求体传递的结构。导致此问题的是什么?
//Nodejs
server.post('/lab/:id', restify.jsonBodyParser(),myhandle);
function myhandle(req, res, next)
{
console.log(JSON.strigify(req.params)); //Contains {name:abc}
}
//C# code
........
........
string labstring = "{name:abc}";
request = new RestRequest("lab/123", Method.POST);
request.AddParameter("application/json", labstring, ParameterType.RequestBody);
response = RestInterface.Execute(request);
更新: 所以我测试没有jsonbodyparser,我可以读取id。但是对于jsonbodyparser,我不能。它只是我作为正文传递的数据。
答案 0 :(得分:0)
好的,所以我终于找到了问题所在。似乎Restify不喜欢使用带有url参数的bodyparser。当我删除bodysarser时,url参数值存储在params中。否则,它包含我作为请求体传递的json结构。我的解决方法是使用queryparser并将值作为查询字符串传递,并将其作为req.query访问。
所以我的最终代码看起来像这样 -
//Nodejs
server.post('/lab', restify.queryParser(),restify.jsonBodyParser(),myhandle);
function myhandle(req, res, next)
{
console.log(JSON.strigify(req.query)); //Contains {name:abc}
}