Menyambung artikel sebelumnya mengenai manajemen routing pada nodejs, kali ini kita akan mencoba membuat server https dengan nodejs. Seperti biasa kita gunakan file-file yang sudah dibuat pada sesi-sesi sebelumnya.
Sebelum update script, kita akan mengenerate terlebih dahulu 2 buah file yang dibutuhkan untuk konfigurasi server https. Buat folder dengan nama https
di workspace kita. Buka terminal, masuk ke direktori https
yang telah kita buat lalu copy paste command di bawah ini.
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Isi option sesuai dengan data-data Anda sendiri seperti pada gambar di bawah ini.
Setelah proses di atas selesai maka pada folder https
akan terbentuk dua buah file yaitu key.pem
dan cert.pem
.
Kedua file di atas kita perlukan untuk option https server yang akan kita buat.
Buka file index.js
yang telah kita buat sebelumnya.
index.js
//gunakan module http var http = require("http"); var url = require("url"); //buat variabel server untuk handle request dan respon var server = http.createServer(function(request, respon) { //parsing url request var parsedUrl = url.parse(request.url, true); var path = parsedUrl.pathname; var trimmedPath = path.replace(/^\/+|\/+$/g, ""); //cek path request ke router var currentHandler = typeof router[trimmedPath] !== "undefined" ? router[trimmedPath] : handlers.notfound; //jalankan handler yg sesuai request currentHandler(function(code, obj) { // Return data tipe json respon.setHeader("Content-Type", "application/json"); respon.writeHead(code); respon.end(JSON.stringify(obj)); }); }); //start server dan listening di port 3000 server.listen(3000, function() { console.log("server nyala dan listening di port 3000"); }); //definisikan handler var handlers = {}; //sample handler handlers.test = function(myCallback) { //callback(statusCode,objek) myCallback(200, { handler: "test handler" }); }; //halo handler handlers.halo = function(myCallback) { //callback(statusCode,objek) myCallback(200, { handler: "halo handler" }); }; //notfound handler handlers.notfound = function(myCallback) { //callback(statusCode,objek) myCallback(404, { handler: "handler tidak ditemukan" }); }; //definisikan router yang berisi handler var router = { test: handlers.test, halo: handlers.halo };
Ganti var http = require("http");
dengan var https = require("https");
lalu tambahkan library fs var fs = require('fs')
.
Setelah itu buat variabel option untuk menampung data yang dibutuhkan oleh server https.
//option https var options = { key: fs.readFileSync("./https/key.pem"), cert: fs.readFileSync("./https/cert.pem") };
Seperti yang kita lihat, hanya ada dua option yaitu key dan cert yang mana kedua option tersebut mengacu ke file yang telah kita generate menggunakan openssl di folder https
.
Kemudian ganti variabel server yang sebelumnya menggunakan library http menjadi https.
var server = http.createServer(function(request, respon) //ganti dengan di bawah ini var server = https.createServer(options, function(request, respon)
//gunakan module http var https = require("https"); var url = require("url"); var fs = require("fs"); //option https var options = { key: fs.readFileSync("./https/key.pem"), cert: fs.readFileSync("./https/cert.pem") }; //buat variabel server untuk handle request dan respon var server = https.createServer(options, function(request, respon) { //parsing url request var parsedUrl = url.parse(request.url, true); var path = parsedUrl.pathname; var trimmedPath = path.replace(/^\/+|\/+$/g, ""); //cek path request ke router var currentHandler = typeof router[trimmedPath] !== "undefined" ? router[trimmedPath] : handlers.notfound; //jalankan handler yg sesuai request currentHandler(function(code, obj) { // Return data tipe json respon.setHeader("Content-Type", "application/json"); respon.writeHead(code); respon.end(JSON.stringify(obj)); }); }); //start server dan listening di port 3000 server.listen(3000, function() { console.log("server https nyala dan listening di port 3000"); }); //definisikan handler var handlers = {}; //sample handler handlers.test = function(myCallback) { //callback(statusCode,objek) myCallback(200, { handler: "test handler" }); }; //halo handler handlers.halo = function(myCallback) { //callback(statusCode,objek) myCallback(200, { handler: "halo handler" }); }; //notfound handler handlers.notfound = function(myCallback) { //callback(statusCode,objek) myCallback(404, { handler: "handler tidak ditemukan" }); }; //definisikan router yang berisi handler var router = { test: handlers.test, halo: handlers.halo };
Sekarang coba run server https nodejs nya.
Lalu coba akses url https://localhost:3000/test
Selamat mencoba.
tambahan bacaan :