Membuat RESTfull API di Nodejs

Posted by Admin on 26 April 2018, 20:49 nodejs, expressjs, restfull

Disini saya mencoba membuat RESTfull webservice secara sederhana tanpa menggunakan database. 

Pertama, Buat folder project Anda lalu buat file JSON sebagai database dengan nama users.json, lalu simpan data seperti berikut

{
   "user1" : {
      "name" : "mahesh",
	  "password" : "password1",
	  "profession" : "teacher",
	  "id": 1
   },
   "user2" : {
      "name" : "suresh",
	  "password" : "password2",
	  "profession" : "librarian",
	  "id": 2
   },
   "user3" : {
      "name" : "ramesh",
	  "password" : "password3",
	  "profession" : "clerk",
	  "id": 3
   }
}

Dari database diatas, saya akan membuat sebuah RESTfull sederahana dengan metode sebagai berikut

NoURIHTTP MethodPOST bodyResult
1 listUsers GET kosong Menampilkan semua user
2 addUser POST JSON String Menambahkan user
3 deleteUser DELETE JSON String Menghapus user
4 :id GET kosong Menampilkan detil user

List Users

Silakan buat file server.js dengan isi code sebagai berikut

var app = express();
var fs = require("fs");
 
app.get('/listUsers', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       console.log( data );
       res.end( data );
   });
})
  
var server = app.listen(8080, "192.168.0.108") //ganti dengan IP ANDA 

Anda dapat mencoba menjalankan file server.js dengan perintah

node server.js

Setelah aplikasi berjalan, silakan akses browser Anda dengan alamat IP 192.168.0.108/listUsers (sesuaikan dengan IP Anda), maka browser akan menampilkan seluruh data yang terdapat pada database users.json

Add User

Untuk menambahkan user, silakan tambahkan baris program berikut sebelum variable server

var user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}
 
app.post('/addUser', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       data["user4"] = user["user4"];
       console.log( data );
       res.end( JSON.stringify(data));
   });
})

Untuk mencobanya, silakan restart ulang server nodejs Anda terlebih dahulu. Setelah itu silakan gunakan aplikasi klien untuk uji coba RESTfull seperti Postman. Disini saya menggunakan Postman.

Pada aplikasi Postman, silakan masukkan URL http://192.168.0.108/addUser (sesuaikan dengan IP Server Anda) dengan metode POST

Show Detail

Untuk menampilakn detil suatu data, silakan tambahkan kode program berikut pada file server.js

app.get('/:id', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      var users = JSON.parse( data );
      var user = users["user" + req.params.id]
      console.log( user );
      res.end( JSON.stringify(user));
   });
})

Untuk melakukan test, silakan akses browser Anda dengan alamat IP 192.168.0.108/2 (sesuaikan dengan IP Anda), maka browser akan menampilkan detil data user ke-2. Anda dapat mengganti id dengan mengganti nilai id pada URI.

Delete

Untuk menghapus data, silakan tambahkan kdoe program berikut pada file server.js

var id = 2;
 
app.delete('/deleteUser', function (req, res) {
 
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       delete data["user" + id];
 
       console.log( data );
       res.end( JSON.stringify(data));
   });
})

Untuk melakukan test, buka aplikasi Postmand dan masukkan URL http://192.168.0.108/deleteUser (sesuaikan dengan IP Server Anda) dengan metode DELETE

All Source Code

Kode program secara keseluruhan adalah seperti ini

var app = express();
var fs = require("fs");
 
var user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}
 
app.post('/addUser', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       data["user4"] = user["user4"];
       console.log( data );
       res.end( JSON.stringify(data));
   });
})
 
app.get('/listUsers', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       console.log( data );
       res.end( data );
   });
})
 
app.get('/:id', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      var users = JSON.parse( data );
      var user = users["user" + req.params.id]
      console.log( user );
      res.end( JSON.stringify(user));
   });
})
 
var id = 2;
 
app.delete('/deleteUser', function (req, res) {
 
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       delete data["user" + id];
 
       console.log( data );
       res.end( JSON.stringify(data));
   });
})
 
var server = app.listen(8080, "192.168.0.108")

Sekian, semoga membantu

Referensi

https://www.tutorialspoint.com/nodejs/nodejs_restful_api.htm