Membuat REST API dengan NodeJS

Nodejs salah satu teknologi runtime JavaScript yang dibangun di atas mesin JavaScript Chrome V8. Secara native JavaScript mendukung JSON jadi sangat cocok banget untuk kita gunakan untuk membangun REST API dimana kita mengunkan JSON untuk pengolahan datanya. Disini kita akan coba latihan untuk membuat sebuah API Webservice. Disini saya mencoba membuat gaya koding nya seperti layaknya MVC jadi kita akan membuat model view dan controller, tetapi disini kita tidak akan membuat view nya karna kita tidak menggunakan view nya.

1. Preparation

Sebelum kita lanjut ke coding kita perlu mempersiapkan beberapa environment nya. Berikut ini beberapa environment yang perlu teman -teman persiapkan.

A. NodeJS
Untuk node js silahkan menuju kesini pilih sesuai dengan sitem operasi teman - teman. Disini nanti kita akan menggunakan library express, mongoose, body-parser.
B. MongoDB
Untuk mongodb silahkan download disini. MongoDB ini seagai platform database yang akan kita gunakan nanti nya.
C. Postman
Nah untuk testing API nya kita menggunakan postman.

2. Getting Started

Sebelum kita mulai saya akan jelaskan sedikit struktur file pada project kita kali ini. Berikut ini struktur file dari project REST API yang akan kita buat.

-- app/
----- controller/
------- userController.js
----- models/
------- user.js
----- routes.js
-- node_modules/
-- package.json
-- app.js

3. Defining Packages

Selanjutnya kita siapkan dependency yang akan kita gunakan dalam project ini. Buat file package.json .

{
“name” : “node-api”,
“main” : “app.js”,
“description” : “Belajar membuat REST API dengan node js”,
“private”: true,
“dependencies”: {
“express”: “~4.0.0”,
“mongoose”: “~3.6.13”,
“body-parser”: “~1.0.1”
}
}

setelah itu kita install dependency dengan perintah dibawah ini.

npm install

Dengan melakukan perintah npm install kita akan mendapati folder node_modules dimana ini adalah berisi file — file dependency dari yang telah kita definisikan di file package.json

4. Setting our server

Nah sekarang kita akan membuat setting server dengan menggunakan port 300. Pastikan port 3000 terpakai, atau temen — temen mau pake port yang lain misalnya port 8080 atau yang lain sesuka temen — temen.

Kita buat file app.js seperti berikut ini

// Basic configuration
var express = require(‘express’);
var app = express();
var bodyParser = require(‘body-parser’);
var mongoose = require(‘mongoose’);
var port = process.env.PORT || 3000;
// connect to database mongodb
mongoose.connect(‘mongodb://localhost:27017/db_user’);
// Configure app to use bodyParser()
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
// REGISTER ROUTES
var apiRouter = require(‘./app/routers.js’)(app, express);
app.use(‘/api/v1’, apiRouter);
// START THE SERVER
app.listen(port);
console.log(‘Server http://localhost:' + port);

berikut ini penjelasan dari code yang kita buat

a. Base Configuration

Disini kita mengimport semua dependency yang akan kita gunakan, dan juga kita mengatur port server nya.

b. Connect to database mongodb

Disini kita mengatur koneksi database mongodb. Untuk nama databasenya bisa teman — teman rubah sesuai dengan keinginan. Disini saya contohkan db_ser.

c. Configure app to use bodyParser()

Untuk mengambil data yang akan di input user nantinya kita menggunakan body parser. Untuk type inputanya nanti urldecoded.

d. REGISTER ROUTES

Untuk menetapkan url yang akan kita pakai nanti nya, seperti contohnya http://localhost:3000/api/v1/user.

e. START THE SERVER

Untuk menjalankan server yang dengan port 3000 yang tela kita definisikan di Base Configuration

5. Setting routes

Agar tidak menumpuk di app.js kita akan membuat file sendiri untuk routes. Buat file routes.js di dalam folder app/. Untuk isi dari routes seperti berikut ini :

var express = require(‘express’);
var user = require(‘./controller/userController’);
module.exports = function(app, express) {
var router = express();
// api/v1/user
router.route(‘/user’)
.get(user.getAll);
// api/v1/user/create
router.route(‘/user/create’)
.post(user.create);
// api/v1/user/:name
router.route(‘/user/:name’)
.get(user.findByName);
return router;
};

6. Create Models

Selanjutnya kita buat models yang nantinya akan kita gunakan untuk pengolahan datanya. Buat file user.js di dalam folder models/

var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
// Create Schema model user
var UserSchema = new Schema({
name: String,
email: String,
password: String
});
// export the Schema model user
module.exports = mongoose.model(‘User’, UserSchema);

7. Create Controller

Controller ini nanti akan mengandel fungsi untuk pengoloahan data seperti baca, tambah, hapus dan update data. Untuk kesempatan kali ini kita akan membahas baca data dan tambah data. OK, buat file userController.js di dalam folder controller/

var User = require(‘./../models/user’);
exports.create = function(req, res){
var user = new User();
user.name = req.body.name;
user.email = req.body.email;
user.password = req.body.password;
user.save(function(err, user){
if(err)
res.send(err);
res.json(user);
});
};
exports.getAll = function(req, res){
User.find(function(err, user) {
if (err)
res.send(err);
console.log(err);
res.json(user);
});
};
exports.findByName = function(req, res){
User.findOne(req.params.name, function(err, user){
if (err)
res.send(err);
res.json(user);
});
};

8. Test Drive :D

Nah sekarang waktunya kita tes drive dari REST API yang telah kita buat. Nah sebelum kita test drive pastikan semua codingan tidak ada yang salah sedikit pun ya :). Selanjutnya jalan kan perintah berikut untuk menjalankan servernya

node app.js

setelah itu buka postman masuk ke url http://localhost:3000/api/v1/user/create/ dan jangan lupa untuk pilih post dan x-www-form-urldecoded untuk inputanya. Jika berhasil akan mendapatkan response seperti berikut ini

Selajutnya kita coba untuk yang GET masuk ke url http://localhost:3000/api/v1/user/ jika berhasil akan tampil seperti ini

Sekarang GET by name http://localhost:3000/api/v1/user/ocit Jika berhasil seperti ini dia tampilanya

Nah selesai juga kan akhir nya mudah — mudahan membantu ya kalo ada keluhan silah kan komentar atau bisa langsung bertana ke saya. Untuk lebih detail kontak saya bisa kunjungi web saya di https://ahmadrosid.com/ . Untuk full source code nya temen — temen bisa buka disini.

Like what you read? Give Ahmad Rosid a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.