Node.js 使用命名参数和router.param()进行Express 4路由处理
在Express 4 routes中是否有一种干净的方法来处理键/值查询参数Node.js 使用命名参数和router.param()进行Express 4路由处理,node.js,express,Node.js,Express,在Express 4 routes中是否有一种干净的方法来处理键/值查询参数 router.route('/some/route?category=:myCategory') 我想检测此路由中是否存在“myCategory”,并使用router.param([name],callback)处理相关逻辑 router.param('myCategory', function(req, res, next, id) { /* some logic here... */ }); 如果我有一
router.route('/some/route?category=:myCategory')
我想检测此路由中是否存在“myCategory”,并使用router.param([name],callback)处理相关逻辑
router.param('myCategory', function(req, res, next, id) {
/* some logic here... */
});
如果我有一个类似于/some/route/:myCategory
的路由,上面的“router.param()”可以正常工作,但如果我使用
router.route('/some/route?category=:myCategory')
我在这里做错了什么,还是Express 4路由器开箱即用不支持这一点?Express将
?
后的属性视为查询参数。因此:
/some/route?mycategory=mine
您必须使用:
req.query.mycategory
或req.query['mycategory']
有关更多信息,请参见此。因此,在这种情况下,使用
router.param()
查询参数是不可能的?一般经验法则:/route/:param
和/route?query=val
。基于forrouter.param()
,我想说不。我将在RESTfull中添加这一点,对您来说,执行/route/:mycategory
并为可选字段保留查询参数可能更有意义。一个常见的例子是说明分页的/route/MyCat?startPage=0&endPage=1
。希望能有所帮助。不幸的是,router.param()
在这里无法工作。我希望用它来验证参数。我知道,没有router.param()。哦,谢谢你的帮助,托尼!