3

好的,所以我有一个带有两个快速服务器的 node.js 应用程序。一种在端口 80 (HTTP) 上侦听,另一种在端口 443 (HTTPS) 上侦听。

现在,这些路线并不完全相同。恰恰相反,大多数东西都是通过 HTTPS 提供的,有些是通过 HTTP 提供的。但是,有一些重叠。

所以,我想知道有没有办法将路由“绑定”到secureApp和App,因为我称它们为这样我不必写两次路由?

前任。现在我有两组相同的路由(一组用于 HTTP,一组用于 HTTPS):

app.get('/tweet-stats.json', function(req, res){
    res.set('Content-Type', 'application/json');
    res.send(publicTweetStatus());
});

secureApp.get('/tweet-stats.json', function(req, res){
    res.set('Content-Type', 'application/json');
    res.send(publicTweetStatus());
});

我想做这样的事情:

model.get('/tweet-stats.json', function(req, res){
    res.set('Content-Type', 'application/json');
    res.send(publicTweetStatus());
});

app.handle.bind(model);
secureApp.handle.bind(model);

这可能吗?在我只管理跨所有端口的此特定路由的一个实例的情况下,我会进行更好的编码。

4

1 回答 1

7

你为什么要重复自己?只是阻止无法使用的路线

function secureOnly(req, res, next) {
  if (!req.secure) {
    res.send(426, 'sorry')
  else {
    next()
  }
}

并监听两个端口

http.createServer(app).listen(80)
https.createServer(app).listen(443)
于 2013-05-10T03:23:44.927 回答