RESTful API (Read)
Materi kali ini, kita akan mencoba membuat RESTful API data mahasiswa menggunakan express dan MySQL.
Jalankan XAMPP
Pilih start menu - XAMPP Control Panel

Pilih Actions Start pada service apache dan mysql

Membuat Database dan Tabel
Buat database mysql dengan nama : db_express
Buat tabel dengan nama : mahasiswa
Menggunakan MySQL Workbench
Menggunakan phpMyAdmin
Buat Direktori Project
Buat direktori project dengan nama : restful-api

Buat file package.json dengan menjalankan perintah di bawah ini:
npm init

Lalu instal express, mysql dan body-parser dengan menjalan perintah di bawah ini:
npm install express mysql body-parser --save

Buat File index.js
File index.js merupakan file yang pertama kali diakses.
const express = require('express'), // panggil modul express
app = express(),
port = process.env.PORT || 3000,
bodyParser = require('body-parser'), // panggil modul body-parser
controller = require('./controller'), // panggil controller.js
routes = require('./routes'); // panggil routes.js
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
routes(app);
app.listen(port);
console.log('RESTful API server started on: ' + port);
process.env.PORT || 3000
, maksudya menyesuaikan PORT yang disediakan pada platform seperti Heroku, jika tidak ada maka PORT 3000 yang digunakan. Pada server localhost port yang akan digunakan adalah PORT 3000.
controller
dan routes
merupakan file modul yang dibuat terpisah dengan tujuan agar code lebih rapi, terstruktur, dan code tidak berada di index.js semua.
body-parser berfungsi untuk memparsing (cara memecah-mecah suatu rangkaian masukan) permintaan yang masuk (https://github.com/expressjs/body-parser)
Buat File conn.js
File conn.js menghubungkan aplikasi ke database mysql.
const mysql = require('mysql'); // panggil modul mysql
const con = mysql.createConnection({
host: "localhost",
user: "root", // user mysql : root
password: "", // pass mysql : default (tidak ada)
database: "db_express" // nama database
});
con.connect(function (err){
if(err) throw err;
});
module.exports = con;
Buat File controller.js
'use strict';
const response = require('./res'); // panggil res.js
const connection = require('./conn'); // panggil conn.js
exports.users = function(req, res) {
connection.query('SELECT * FROM mahasiswa', function (error, rows, fields){
if(error){
console.log(error)
} else{
response.ok(rows, res)
}
});
};
exports.index = function(req, res) {
response.ok("Hello from the Node JS RESTful side!", res)
};
'use strict';
merupakan ekspresi literal javascript untuk menunjukkan bahwa kode harus dijalankan dalam mode strict. Dengan mode strict, kita tidak dapat, misalnya, menggunakan variabel yang tidak dideklarasikan. (https://www.w3schools.com/js/js_strict.asp)
'SELECT * FROM mahasiswa'
merupakan query untuk mengakses data yang ada di tabel mahasiswa.
response.ok(rows, res)
memanggil exports.ok yang ada di file res.js dengan mengirimkan parameter rows dan res.
Buat File res.js
File res.js merupakan file untuk membuat standarisasi respon yang akan dikembalikan. Standarisasi respon ini nantinya sangat membantu frontend web developer.
'use strict';
exports.ok = function(values, res) {
let data = {
'status': 200,
'values': values
};
res.json(data);
res.end();
};
values
disini merupakan parameter rows
yang dikirim dari exports.users pada controller.js
res.json(data)
mengirimkan data (status dan values) dalam bentuk json
res.end()
menutup atau mengakhiri koneksi ke database
HTTP response status code dapat dilihat di https://developer.mozilla.org/id/docs/Web/HTTP/Status
Buat File routes.js
File routes.js berisi route atau endpoint yang dapat diakses
'use strict';
module.exports = function(app) {
let todoList = require('./controller'); // panggil controller.js
// endpoint http://localhost:3000
app.route('/')
.get(todoList.index);
// endpoint http://localhost:3000/users
app.route('/users')
.get(todoList.users);
};
Jalankan node index.js
Silakan jalankan index.js dengan perintah
node index.js
Silakan akses http://localhost:3000 dan http://localhost:3000/users dari browser atau menggunakan aplikasi insomina atau postman.


Referensi
Last updated
Was this helpful?