29

场景:我们的开发人员正在尝试用 Node.JS Restful API 替换 Web 服务(用 C#.Net 编写)。

问题:现在我们需要按原样处理传入的请求(我们无法控制它)。所以下面是传入 URL 的格式:

http://www.website.com/Service.aspx?UID=Trans001&FacebookID=ae67ea324&GetDetailType=FULL

我能够处理这样的 URL:

http://www.website.com/service/Trans001/ae67ea324/FULL

我可以从上面的 URL 解析/读取参数

代码:

var server = require('restify').createServer();
function respond(req, res, next) {
    console.log("req.params.UID:" + req.params.UID);
    console.log("req.params.FacebookID:" + req.params.FacebookID);
    console.log("req.params.GetDetailType" + req.params.GetDetailType);
}
server.get('/service/:UID/:FacebookID/:GetDetailType', respond);
server.listen(8080, function () {
    console.log('%s listening at %s', server.name, server.url);
});

问题:如何从格式如下的 URL 中读取多个参数http://www.website.com/Service.aspx?UID=Trans001&FacebookID=ae67ea324

4

3 回答 3

75

您只需要像这样加载查询解析器插件;

server.use(restify.plugins.queryParser());
于 2013-05-06T22:17:03.677 回答
5

Restify 5(2017)答案:

从 restify 5 开始,您现在可以像这样设置查询解析器 server.use(restify.plugins.queryParser());

如果你使用这个插件,你可以在req.query.

有关其他选项和信息,请查看 restify 文档:http ://restify.com/docs/plugins-api/#queryparser

于 2017-12-14T12:08:41.220 回答
2

西蒙的回答不再有效,因为 restify 的 queryParser 已移至 restify-plugins 包。更新的解决方案是

server.use(require('restify-plugins').queryParser());
于 2017-05-15T10:48:19.627 回答