node.js – 如何使用Express for HTTPS的路由?

前端之家收集整理的这篇文章主要介绍了node.js – 如何使用Express for HTTPS的路由?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在向我的nodeJS服务器启用https请求.但我想使用相同的路由,我可以从具有该8080端口的http请求接收到具有该443端口的https.

http://api.myapp.com:8080/api/waitlist/join是成功的
https://api.myapp.com:443/api/waitlist/join不是
我在代码中错过了什么来使用与httpsServer的’app’相同的路由?

var fs              = require('fs');
var https           = require('https');
var express         = require('express');       // call express
var app             = express();                // define our app using express
var bodyParser      = require('body-parser');
var mongoose        = require('mongoose');
var cors            = require('cors');
var config          = require('./config');

// Configure app to use bodyParser()
[...]
// Configure the CORS rights
app.use(cors());

// Enable https 
var privateKey = fs.readFileSync('key.pem','utf8');
var certificate = fs.readFileSync('cert.pem','utf8');

var credentials = {
    key: privateKey,cert: certificate
};

var httpsServer = https.createServer(credentials,app);

// Configure app port
var port            = process.env.PORT || config.app.port; // 8080

// Configure database connection
[...]

// ROUTES FOR OUR API
// =============================================================================

// Create our router
var router = express.Router();

// Middleware to use for all requests
router.use(function(req,res,next) {
    // do logging
    console.log('>>>> Something is happening. Here is the path: '+req.path);
    next();
});

// WAITLIST ROUTES ---------------------------------------
// (POST) Create Email Account --> Join the waitList
router.route('/waitlist/join').post(waitlistCtrl.joinWaitlist);
// And a lot of routes...


// REGISTER OUR ROUTES -------------------------------
// All of our routes will be prefixed with /api
app.use('/api',router);



// START THE SERVER
// =============================================================================
app.listen(port);
httpsServer.listen(443);

谢谢!

解决方法

使用 API docs for .listen在我自己的项目中有类似的需求,并查看你的代码,我认为两个快速更改应该工作:

1)添加var http = require(‘http’);满足您的其他要求.

2)将应用程序的最后两行更改为:

// START THE SERVER
// =============================================================================
http.createServer(app).listen(port);
https.createServer(credentials,app).listen(443);

(如果此方法有效,您还可以删除对httpsServer的引用.)

猜你在找的Node.js相关文章