场景:我们开发人员正在尝试用Node.JS Restful API取代web服务(用c# . net编写)。
Issue:现在我们需要按原样处理传入的请求(我们无法控制它)。下面是输入URL的格式:
http://www.website.com/Service.aspx?UID=Trans001& FacebookID = ae67ea324& GetDetailType =全部
我可以像这样处理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);
});
问题:如何从格式为http://www.website.com/Service.aspx?UID=Trans001&FacebookID=ae67ea324
您只需要像这样加载查询解析器插件;
server.use(restify.plugins.queryParser());
Restify 5(2017)答:
从restify 5开始,你现在可以像这样设置查询解析器:server.use(restify.plugins.queryParser());
.
如果你使用这个插件,你可以访问req.query
中解析的参数。
有关其他选项和信息,请查看restify文档:http://restify.com/docs/plugins-api/#queryparser
Simon的答案不再有效,因为restify的queryParser已被移动到restify-plugins包中。更新后的解决方案是
server.use(require('restify-plugins').queryParser());