javascript - 获取 restify REST API 服务器以支持 HTTPS 和 HTTP

标签 javascript node.js rest https restify

我正在使用 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/

相关文章:

node.js - 在 Intellij 中使用 node.js Bunyan 日志记录

javascript - 添加 onClick 事件到 zabuto 日历

javascript - 如何使用 PHP 写入 Javascript 对象

node.js - 从nodeJS中的字符串中解析一些值

java - Jersey @PreMatching 和 1 个提供商中的名称绑定(bind)

java - 扩展 dotCMS REST API

WCF REST 参数不能包含句点?

javascript - jQuery .toggle() 子问题

javascript - 奇怪的行为 IE8 选择框向上显示并超出浏览器限制

node.js - 如何将 IBM Cloud Functions 上的操作与数据库连接?