I am using node.js restify ver4.0.3
The simple following code works as a simple REST API server that supports HTTP. An example API call is 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);
});
Suppose I want to support HTTPS and make the API call https://127.0.0.1:9898/echo/message
How can this be done?
I noticed that restify code changes pretty fast and older code with older version may not work with the latest version.
To use HTTPS, you need a key and a certificate:
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);
You will need to start both servers for allowing both HTTP and HTTPS access:
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);
});.
To configure routes to server, declare same routes for both servers, redirecting between HTTP and HTTPS as needed:
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   
});
The above listens to requests to a route /1 and simply redirects it to the HTTPS server which processes it. 
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With