繁体   English   中英

Node.js Express,路由器,最佳param作为扩展

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM