我正在使用 node.js restify ver4.0.3
下面的简单代码用作支持 HTTP 的简单 REST API 服务器。一个示例 API 调用是 http://127.0.0.1:9898/echo/message
var restify = require('restify');
var server = restify.createServer({
name: 'myapp',
version: '1.0.0'
});
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
//http://127.0.0.1:9898/echo/sdasd
server.get('/echo/:name', function (req, res, next) {
res.send(req.params);
return next();
});
server.listen(9898, function () {
console.log('%s listening at %s', server.name, server.url);
});
假设我想支持 HTTPS 并进行 API 调用 https://127.0.0.1:9898/echo/message
如何做到这一点?
我注意到 restify 代码更改得非常快,旧版本的旧代码可能无法与最新版本一起使用。
最佳答案
要使用 HTTPS,您需要一个 key 和一个证书:
var https_options = {
key: fs.readFileSync('/etc/ssl/self-signed/server.key'),
certificate: fs.readFileSync('/etc/ssl/self-signed/server.crt')
};
var https_server = restify.createServer(https_options);
您需要启动两个服务器以允许 HTTP 和 HTTPS 访问:
http_server.listen(80, function() {
console.log('%s listening at %s', http_server.name, http_server.url);
});.
https_server.listen(443, function() {
console.log('%s listening at %s', https_server.name, https_server.url);
});.
要配置到服务器的路由,为两个服务器声明相同的路由,根据需要在 HTTP 和 HTTPS 之间重定向:
http_server.get('/1', function (req, res, next) {
res.redirect('https://www.foo.com/1', next);
});
https_server.get('/1', function (req, res, next) {
// Process the request
});
上面的代码监听对路由 /1
的请求,并简单地将它重定向到处理它的 HTTPS 服务器。
关于javascript - 获取 restify REST API 服务器以支持 HTTPS 和 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33666226/