如何使用 Node.JS 的 restify 框架解析/读取多个参数

Posted

技术标签:

【中文标题】如何使用 Node.JS 的 restify 框架解析/读取多个参数【英文标题】:How to parse/read multiple parameters with restify framework for Node.JS 【发布时间】:2013-03-27 15:54:53 【问题描述】:

场景:我们的开发人员正在尝试用 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);
);

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

【问题讨论】:

【参考方案1】:

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

server.use(restify.plugins.queryParser());

【讨论】:

是的。这将允许通过 req.query.my_param 读取查询字符串参数。【参考方案2】:

Restify 5 (2017) 答案:

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

如果你使用这个插件,你可以访问req.query中的解析参数。

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

【讨论】:

【参考方案3】:

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

server.use(require('restify-plugins').queryParser());

【讨论】:

现在restify-plugins 已被弃用...更新后的解决方案是server.use(restify.plugins.queryParser());

以上是关于如何使用 Node.JS 的 restify 框架解析/读取多个参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 RESTify Node.js 创建 OAuth2.0 服务提供者

使用 restify (node.js) 提供静态文件

Node.js 使用 socket.io 进行重构

Farrow 介绍:类型友好的函数式风格 Node.js Web 框架

Restify + TypeScript:

Bot Framework Webchat 无法从 Node.js restify 服务器(在 Azure 上)获取令牌:CORS 策略:不存在“Access-Control-Allow-Origin