好的,所以我有一个带有两个快速服务器的 node.js 应用程序。一个在端口 80 (HTTP) 上监听,一个在端口 443 (HTTPS) 上监听。
现在,这些路线并不完全相同。恰恰相反,大多数东西都是通过 HTTPS 提供的,有些是通过 HTTP 提供的。但是,有一些重叠。
所以,我想知道是否有一种方法可以将路由“绑定(bind)”到我所说的 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);
这可能吗?我会做更好的编码,我只管理跨所有端口的这个特定路由的一个实例。
最佳答案
你为什么要重复自己?只是阻止不能使用的路由
function secureOnly(req, res, next) {
if (!req.secure) {
res.send(426, 'sorry')
else {
next()
}
}
并监听两个端口
http.createServer(app).listen(80)
https.createServer(app).listen(443)
关于node.js - 创建对象以附加到 Node.js 中的 HTTP 和 HTTPS Express 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16474588/