处理path如/ search /:search(/ filter1 /:filter1)?
我希望能够处理这样的path
/search/:search /search/:search/filter1/:filter1 /search/:search/filter2/:filter2 /search/:search/filter1/:filter1/filter2/:filter2
我应该如何使用restify或expressjs(或任何其他REST库)?
我知道我可以创build一个基于正则expression式的处理程序,然后parsing参数,并为每个部分手动调用处理程序,但我直觉应该有一些更简单,更结构化的使用库方法处理程序的方式。 任何意见表示赞赏。
谢谢。
[编辑]我认为的解决scheme的观点是类似于这样的:
REST.get('/search/:search(/filter1/:filter1)?(/filter2/:filter2)?',function(req,res,next){ // handler for search where $search is always defined, // but $filter1 and $filter2 are optional });
现在这样解决,直到find更好的解决scheme
如果没有更好的命题,现在我这样做:
var searchHandler = function (req,res,next){}; REST.get('/search/:search', searchHandler); REST.get('/search/:search/filter1/:filter1', searchHandler); REST.get('/search/:search/filter2/:filter2', searchHandler); REST.get('/search/:search/filter1/:filter1/filter2/:filter2', searchHandler);
将“search”作为资源并将所有这些filter作为查询参数,可能会更好。 换句话说,做这样的事情,而不是:
REST.get('/search',function(req,res,next){ var filter1 = req.params.filter1; if(filter1 !== undefined){ // Do something with it here. } // Etc. });
而你的url是这样的:
http://localhost/search?filter1=green
- 同步使用Node.js下载N个远程文件
- 我如何使用Alamofire进行基于令牌的authentication?
- 如何在交叉源请求中保留会话数据?
- 处理mongodb时直接stream式传输错误来表示响应
- 摩卡它()testing只通过,如果没有事先testing
- 对于Node.js应用程序,使用带有Express-Handlebars的Angular
- TDD先testingNodejs表示Rest Api – unit testing中间件/控制器/路由
- 我可以使用APNauthentication密钥.p8文件与PHP发送iOS推送通知?
- '如何高效地通过node.js mongodb驱动程序stream大型json文档?