ExpressJS RestAPI
ExpressJS RestAPI
MODUL 5
ExpressJS Rest API CRUD Mahasiswa
Disusun Oleh:
Daud Muhajir, [Link]., [Link].
DAFTAR ISI.............................................................................................................................2
1. Membuat Project ExpressJS................................................................................................4
1.1. Membuat Project...........................................................................................................4
1.2. Membuat Main File ExpressJS......................................................................................7
1.3. Menjalankan Project ExpressJS....................................................................................7
1.4. Instalasi Nodemon.........................................................................................................7
2. Konfigurasi Database...........................................................................................................8
2.1. Instalasi library MySQL..................................................................................................8
2.2. Konfigurasi Database....................................................................................................9
2.3. Membuat Database dan Table......................................................................................9
3. Menampilkan Data dari Database......................................................................................10
3.1. Membuat Konfigurasi Router.......................................................................................10
3.2. Import Router di [Link]..............................................................................................11
3.3. Uji Coba REST API Menampilkan Data......................................................................12
4. Insert Data ke Database....................................................................................................12
4.1. Instalasi Library Pendukung........................................................................................12
4.2. Menambahkan Route Store.........................................................................................14
4.3. Uji Coba Rest API Insert Data.....................................................................................16
5. Menampilkan Detail Data...................................................................................................18
5.1. Menambahkan Route Detail........................................................................................18
5.2. Uji Coba Rest API Detail Data.....................................................................................21
6. Update Data ke Database..................................................................................................22
6.1. Menambahkan Route Update......................................................................................22
6.2. Uji Coba Rest API Update Data..................................................................................25
7. Delete Data dari Database.................................................................................................26
7.1 Menambahkan Route Delete........................................................................................26
7.2. Uji Coba Rest API Delete Data....................................................................................31
8. Enable CORS di Express...................................................................................................32
8.1. Instalasi Library CORS................................................................................................32
8.2. Konfigurasi CORS.......................................................................................................32
Tugas.....................................................................................................................................33
MODUL
ExpressJS Rest API
Pada praktikum kali ini kita akan belajar membuat CRUD Restful API Dengan [Link].
Dalam programming, CRUD merupakan singkatan dari Create Read Update dan Delete.
Yakni aplikasi yang berisi pengolahan data. Restful API ini merupakan backend yang
nantinya akan digunakan frontend untuk berkomunikasi dengan database.
Perintah mkdir di atas digunakan untuk membuat sebuah direktori / folder baru dan nama
folder tersebut adalah express-api.
Setelah folder berhasil terbuat, sekarang kita akan masuk ke dalam folder tersebut
menggunakan perintah berikut ini :
Jika sudah berada di dalam folder express-api, maka sekarang kita akan lanjutkan untuk
membuat project [Link] baru. Silahkan jalankan perintah berikut ini di dalam
terminal/CMD :
npm init
Ketika kita menjalankan perintah di atas, maka kita akan mendapatkan beberapa
pertanyaan, silahkan ikuti langkah-langkahnya seperti berikut ini :
PERTANYAAN AKSI
Kemudian ada pertanyaan lagi Is this OK? (yes). Silahkan ENTER. Jika berhasil maka kita
akan mendapatkan 1 file baru dengan nama [Link] dengan isi sama seperti di
bawah.
Sekarang, kita lanjutkan untuk melakukan installasi [Link]. Silahkan jalankan perintah
berikut ini di dalam terminal/CMD dan pastikan berada di dalam folder express-api.
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 folder baru dengan
nama node_modules, yang mana folder tersebut berisi dependensi dari [Link] dan
termasuk [Link].
Dan jika kita lihat di dalam file [Link] dibagian dependencies, maka kita menemukan
kurang lebih sepeti berikut ini :
Artinya [Link] sudah berhasil ditambahkan.
[Link](port, () => {
[Link](`app running at [Link]
})
Jika muncul tulisan app running at [Link] Artinya aplikasi [Link] kita telah
berhasil dijalankan dan kita bisa melihatnya di dalam web browser di [Link]
dan jika berhasil maka kurang lebih tampilannya seperti berikut ini :
Disini kita akan menginstall library Nodemon secara global di dalam komputer, silahkan
jalankan perintah berikut ini di dalam terminal/CMD :
Sekarang, untuk menjalankan project [Link], kita gunakan perintah seperti berikut ini :
Sekarang, jika ada perubahan yang kita lankukan di dalam project, maka Nodemon akan
otomatis melakukan restart secara otomatis.
2. Konfigurasi Database
Silahkan buat folder baru dengan nama config di dalam project [Link]. Dan di dalam
folder config silahkan buat file baru dengan nama [Link] dan masukkan kode berikut ini
di dalamnya.
[Link](function (error) {
if (!!error) {
[Link](error);
} else {
[Link]('Connection Succuessfully!');
}
})
[Link] = connection;
Silahkan jalankan xampp nya, start apache dan MySQL, kemudian silahkan buka
[Link] kemudian buat database baru dengan nama
db_express_api, kurang lebih seperti berikut ini :
Di atas, kita set 4 field/coloumn tersebut kurang lebih seperti berikut ini :
nim - menggunakan type data VARCHAR dengan value 255 kemudian kita set menjadi
PRIMARY
nama - menggunakan type data varchar dengan value 255.
jurusan - menggunakan type data varchar dengan value 255.
asal_provinsi - menggunakan type data varchar dengan value 255.
Silahkan buat folder baru dengan nama routes di dalam project [Link], setelah itu di
dalam folder routes tersebut silahkan buat file baru dengan nama [Link] dan
masukkan kode berikut ini di dalamnya.
/routes/[Link] const express = require('express');
const router = [Link]();
//import database
const connection = require('../config/database');
/**
* INDEX MAHASISWA
*/
[Link]('/', function (req, res) {
//query
[Link]('SELECT * FROM mahasiswa ORDER
BY nim desc', function (err, rows) {
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](200).json({
status: true,
message: 'List Data Mahasiswa',
data: rows
})
}
});
});
[Link] = router;
[Link](port, () => {
[Link](`app running at [Link]
})
Di atas, kita telah berhasil melakukan proses uji coba menampilkan data posts dari
database. Karena belum memiliki data apapun di dalam database, maka kita hanya
mendapatkan array kosong.
Body Parser
Body Parser merupakan library yang berisi middleware untuk membaca sebuah data yang
dikirimkan oleh HTTP POST dan menyimpannya sebagai objek JavaScript yang dapat di
akses melalui [Link]. Silahkan jalankan perintah berikut ini di dalam terminal/CMD untuk
melakukan installasi Body Parser di dalam project [Link].
Setelah berhasil melakukan installasi, sekarang kita lanjutkan untuk melakukan konfigurasi
di dalam project [Link]. Silahkan buka file [Link], kemudian ubah kode-nya menjadi
seperti berikut ini :
// parse application/x-www-form-urlencoded
[Link]([Link]({ extended: false }))
// parse application/json
[Link]([Link]())
[Link](port, () => {
[Link](`app running at [Link]
})
Setelah berhasil melakukan installasi dan konfigurasi Body Parser di dalam project
[Link], sekarang kita lanjutkan untuk melakukan installasi library Express Validator.
Library ini akan digunakan untuk membuat sebuah validasi di dalam project [Link]
dengan lebih mudah.
//import database
const connection = require('../config/database');
/**
* INDEX MAHASISWA
*/
[Link]('/', function (req, res) {
//query
[Link]('SELECT * FROM mahasiswa ORDER
BY nim desc', function (err, rows) {
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](200).json({
status: true,
message: 'List Data Mahasiswa',
data: rows
})
}
});
});
/**
* STORE MAHASISWA
*/
[Link]('/store', [
//validation
body('nim').notEmpty(),
body('nama').notEmpty(),
body('jurusan').notEmpty(),
body('asal_provinsi').notEmpty()
if (![Link]()) {
return [Link](422).json({
errors: [Link]()
});
}
//define formData
let formData = {
nim: [Link],
nama: [Link],
jurusan: [Link],
asal_provinsi: [Link].asal_provinsi
}
// insert query
[Link]('INSERT INTO mahasiswa SET ?',
formData, function (err, rows) {
//if(err) throw err
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](201).json({
status: true,
message: 'Insert Data
Successfully',
data: rows[0]
})
}
})
});
[Link] = router;
Sekarang kita lanjutkan untuk melakukan proses insert data ke dalam database
menggunakan Rest API di [Link]. Jalankan kembali project express nya, kemudian
silahkan buka aplikasi Postman, kemudian masukkan URL berikut ini
[Link] dan untuk method-nya adalah POST.
Setelah itu, silahkan klik Send, maka kita akan mendapatkan sebuah response berupa
validasi yang dihasilkan oleh library Express Validator. Karena kita tidak mengirim data
apapun ke dalam server.
Sekarang, kita akan lakukan uji coba memasukkan data dan mengirimkannya ke dalam
server. Silahkan klik tab Body dan pilih raw kemudian ubah tipe nya ke JSON, kemudian
masukkan object JSON berikut ini :
Silahkan cek di database akan muncul data yang sudah kita tambahkan
5. Menampilkan Detail Data
//import database
const connection = require('../config/database');
/**
* INDEX MAHASISWA
*/
[Link]('/', function (req, res) {
//query
[Link]('SELECT * FROM mahasiswa ORDER
BY nim desc', function (err, rows) {
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](200).json({
status: true,
message: 'List Data Mahasiswa',
data: rows
})
}
});
});
/**
* STORE MAHASISWA
*/
[Link]('/store', [
//validation
body('nim').notEmpty(),
body('nama').notEmpty(),
body('jurusan').notEmpty(),
body('asal_provinsi').notEmpty()
if (![Link]()) {
return [Link](422).json({
errors: [Link]()
});
}
//define formData
let formData = {
nim: [Link],
nama: [Link],
jurusan: [Link],
asal_provinsi: [Link].asal_provinsi
}
// insert query
[Link]('INSERT INTO mahasiswa SET ?',
formData, function (err, rows) {
//if(err) throw err
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](201).json({
status: true,
message: 'Insert Data
Successfully',
data: rows[0]
})
}
})
});
/**
* SHOW MAHASISWA
*/
[Link]('/(:id)', function (req, res) {
let id = [Link];
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
}
[Link] = router;
5.2. Uji Coba Rest API Detail Data
Sekarang kita akan lakukan uji coba untuk menampilkan detail data berdasarkan ID, yaitu
NIM. SIlahkan buka aplikasi Postman dan masukkan URL berikut ini
[Link] dan untuk method-nya silahkan pilih GET.
Sekarang, kita akan lanjutkan untuk melakukan uji coba dengan data yang ada di dalam
table posts, silahkan buka aplikasi Postman dan masukkan URL berikut ini
[Link] dan untuk method-nya silahkan pilih GET.
6. Update Data ke Database
Silahkan buka file routes/[Link], kemudian ubah semua kode-nya menjadi seperti
berikut ini :
//import database
const connection = require('../config/database');
/**
* INDEX MAHASISWA
*/
[Link]('/', function (req, res) {
//query
[Link]('SELECT * FROM mahasiswa ORDER
BY nim desc', function (err, rows) {
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](200).json({
status: true,
message: 'List Data Mahasiswa',
data: rows
})
}
});
});
/**
* STORE MAHASISWA
*/
[Link]('/store', [
//validation
body('nim').notEmpty(),
body('nama').notEmpty(),
body('jurusan').notEmpty(),
body('asal_provinsi').notEmpty()
if (![Link]()) {
return [Link](422).json({
errors: [Link]()
});
}
//define formData
let formData = {
nim: [Link],
nama: [Link],
jurusan: [Link],
asal_provinsi: [Link].asal_provinsi
}
// insert query
[Link]('INSERT INTO mahasiswa SET ?',
formData, function (err, rows) {
//if(err) throw err
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](201).json({
status: true,
message: 'Insert Data
Successfully',
data: rows[0]
})
}
})
});
/**
* SHOW MAHASISWA
*/
[Link]('/(:id)', function (req, res) {
let id = [Link];
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
}
/**
* UPDATE MAHASISWA
*/
[Link]('/update/:id', [
//validation
body('nama').notEmpty(),
body('jurusan').notEmpty(),
body('asal_provinsi').notEmpty()
if (![Link]()) {
return [Link](422).json({
errors: [Link]()
});
}
//id mahasiswa
let id = [Link];
//data mahasiswa
let formData = {
nama: [Link],
jurusan: [Link],
asal_provinsi: [Link].asal_provinsi
}
// update query
[Link](`UPDATE mahasiswa SET ? WHERE
nim = ${id}`, formData, function (err, rows) {
//if(err) throw err
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](200).json({
status: true,
message: 'Update Data
Successfully!'
})
}
})
});
[Link] = router;
CATATAN : di atas, kita akan melakukan update data yang memiliki ID(primary key)
11111111 atau nim 11111111.
Setelah itu buka tab Body, pilih raw dan ubah type ke JSON, kemudian masukkan object
seperti berikut :
//import database
const connection = require('../config/database');
/**
* INDEX MAHASISWA
*/
[Link]('/', function (req, res) {
//query
[Link]('SELECT * FROM mahasiswa ORDER
BY nim desc', function (err, rows) {
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](200).json({
status: true,
message: 'List Data Mahasiswa',
data: rows
})
}
});
});
/**
* STORE MAHASISWA
*/
[Link]('/store', [
//validation
body('nim').notEmpty(),
body('nama').notEmpty(),
body('jurusan').notEmpty(),
body('asal_provinsi').notEmpty()
if (![Link]()) {
return [Link](422).json({
errors: [Link]()
});
}
//define formData
let formData = {
nim: [Link],
nama: [Link],
jurusan: [Link],
asal_provinsi: [Link].asal_provinsi
}
// insert query
[Link]('INSERT INTO mahasiswa SET ?',
formData, function (err, rows) {
//if(err) throw err
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](201).json({
status: true,
message: 'Insert Data
Successfully',
data: rows[0]
})
}
})
});
/**
* SHOW MAHASISWA
*/
[Link]('/(:id)', function (req, res) {
let id = [Link];
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
}
/**
* UPDATE MAHASISWA
*/
[Link]('/update/:id', [
//validation
body('nama').notEmpty(),
body('jurusan').notEmpty(),
body('asal_provinsi').notEmpty()
if (![Link]()) {
return [Link](422).json({
errors: [Link]()
});
}
//id mahasiswa
let id = [Link];
//data mahasiswa
let formData = {
nama: [Link],
jurusan: [Link],
asal_provinsi: [Link].asal_provinsi
}
// update query
[Link](`UPDATE mahasiswa SET ? WHERE
nim = ${id}`, formData, function (err, rows) {
//if(err) throw err
if (err) {
return [Link](500).json({
status: false,
message: 'Internal Server Error',
})
} else {
return [Link](200).json({
status: true,
message: 'Update Data
Successfully!'
})
}
})
});
/**
* DELETE MAHASISWA
*/
[Link]('/delete/(:id)', function (req, res)
{
let id = [Link];
[Link] = router;
CATATAN : di atas, kita melakukan delete data dengan ID(primary key) 11111111 atau nim
11111111.
Silahkan klik Send, jika berhasil maka kita akan mendapatkan response dengan format
JSON yang berisi informasi data berhasil dihapus dari database.
//use cors
[Link](cors())
// parse application/x-www-form-urlencoded
[Link]([Link]({ extended: false }))
// parse application/json
[Link]([Link]())
[Link](port, () => {
[Link](`app running at [Link]
})
Tugas
1. Praktekkan seluruh poin praktikum yang ada di atas.
2. Dokumentasikan hasil praktikum tersebut (screenshot kode program, output pada
postman, penjelasan kode program yang ditulis) dalam bentuk Laporan
Praktikum.
3. Kumpulkan Laporan Praktikum (.pdf) dan Folder Project React (tanpa folder
node_modules) yang telah dibuat di dalam praktikum via E-Learning dalam format
[nim].zip.
4. Laporan (.pdf) dimasukkan ke dalam folder project Express.