[英]Node.js Express, router, optimal param as extension
我的第一个Node.js Express应用程序。 在路线中,我有一个名为/ info的路线,它会呈现一个信息页面模板。
app.js:
app.use('/info', info);
info.js:
// routes to /info, and should also handle /info.json
router.get('/', function(req, res) { //... });
我也希望能够用上述同样的功能,以便使用最佳参数以.json,渲染,而不是JSON内容- /info.json。
我一直在尝试正则表达式,但我无法让它工作。 我只能做: /info/.json
是否可以使用相同的功能执行此操作?
我会使用express的内容协商功能。 首先,宣布您的路线如下:
app.get('/info(.json)?', info);
然后在info(取自上面的链接):
res.format({
'text/html': function(){
res.send('hey');
},
'application/json': function(){
res.send({ message: 'hey' });
}
});
编辑 :使用正则表达式的单一路由
使用app.use('/info', info);
你说的是路由info
路径。 这就是为什么你得到/info/.json
所以你将要改变你为此设置的工作方式。
而不是module.exports = router;
在你的info.js中,你会想要做这样的事情:
module.exports = function(req, res) {
if(req.isJSON) {
} else {
}
}
在你的app.js中,你将有一些路由中间件将请求标记为.json
:
app.use('*.json', function() {
req.isJSON = true;
next();
});
app.get('/info', info);
app.get('/info.json', info);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.