Pada tutorial ini Anda akan belajar bagaimana membuat RESTful API menggunakan node.js, express, sequelize, dan MySQL.
Ini bukanlah tutorial untuk pemula,
Jika Anda seorang pemula di node.js express, saya sarankan Anda terlebih dahulu mempelajari “Tutorial Express Js Untuk Pemula”.
Mari kita mulai.
Apa Itu Sequelize?
Sequelize merupakan node.js promise-based ORM (Object Relational Mapping) untuk Postgre, MySQL, MariaDB, SQLite, dan Microsoft SQL Server.
Dengan memanfaatkan ORM, Anda dapat membuat aplikasi dengan mudah tanpa menuliskan perintah SQL (Structured Query Language).
Sama halnya dengan Mongoose untuk mongoDB.
Pada tutorial ini, saya menggunakan MySQL.
Jika Anda juga menggunakan MySQL, Anda akan menyukai tutorial ini.
Meskipun tutorial ini menggunakan MySQL, bukan berarti Anda tidak dapat menerapkannya untuk Postgre, SQLite, ataupun Microsoft SQL Server, perbedaannya hanya terletak pada koneksi ke database.
Anda dapat melihatnya di dokumentasi sequelize untuk info lebih lengkap.
Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI
Order Sekarang.!
#1. Design EndPoint
Ini penting!
Sebelum membuat RESTful API, ada baiknya kita definisikan dulu EndPoint dari RESTful API yang akan dibuat.
EndPoint merupakan routes dari API yang akan kita buat.
RESTful API menggunakan HTTP verbs.
HTTP verbs yang umum digunakan adalah GET, POST, PUT, dan DELETE.
GET untuk mendapatkan data dari server atau lebih dikenal dengan istilah READ, POST untuk meng-CREATE data baru, PUT untuk UPDATE data, dan DELETE untuk menghapus data.
Atau lebih dikenal dengan istilah CRUD (Create-Read-Update-Delete).
Pada tutorial kali ini, saya akan sharing bagaimana membuat RESTful API sederhana untuk mengambil data dari server (GET), membuat data baru ke server (POST), mengupdate data ke server (PUT), dan menghapus data ke server (DELETE) dari suatu table di database yaitu table products.
Berikut rancangan EndPoint dari RESTful API yang akan kita buat:
#2. Buat database dan table
Buat database baru pada MySQL, Anda dapat menggunakan tools seperti SQLyog, PHPMyAdmin atau sejenisnya.
Disini saya membuat database dengan nama “sequelize_db”.
Jika Anda membuat database dengan nama yang sama itu lebih baik.
Untuk membuat database dengan MySQL, dapat dilakukan dengan mengeksekusi query berikut:
CREATE DATABASE sequelize_db;
Perintah SQL diatas akan membuat sebuah database dengan nama “sequelize_db”.
Selanjutnya, buat sebuah table di dalam database “sequelize_db”.
Disini saya membuat sebuah table dengan nama “products”.
Jika Anda membuat table dengan nama yang sama itu lebih baik.
Untuk membuat table “products”, dapat dilakukan dengan mengeksekusi perintah SQL berikut:
CREATE TABLE products( id INT(11) PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200), price DOUBLE, createdAt DATE, updatedAt DATE )ENGINE=INNODB;
Perintah SQL diatas akan membuat sebuah table bernama “products” dengan field: id, title, price, createdAt, dan updatedAt.
Sequelize mewajibkan Anda untuk memiliki field: id, createdAt, dan updatedAt.
Jika Anda tidak memiliki field tersebut, maka akan terdapat error.
#3. Install Express, MySQL2, Sequelize, dan Cors
Buat sebuah folder di komputer Anda, disini saya beri nama “sequelize-app”.
Jika Anda membuat folder dengan nama yang sama, itu lebih baik.
Anda bebas membuatnya di manapun, baik di C, D, ataupun di Desktop.
Folder ini akan menjadi folder project utama.
Kemudian buka folder “sequelize-app” tersebut menggunakan kode editor, disini saya menggunakan Visual Studio Code.
Saya juga menyarankan Anda untuk menggunakan Visual Studio Code.
Anda dapat mendownload Visual Studio Code pada link berikut dan menginstallnya di komputer Anda:
https://code.visualstudio.com/
Selanjutnya, buka terminal pada Visual Studio Code pada menu bar terminal.
Setelah itu, ketikan perintah berikut untuk membuat file “package.json”:
npm init –y
Selanjutnya, install express, mysql2, sequelize, dan cors dengan mengetikan perintah berikut pada terminal:
npm install express mysql2 sequelize cors
Seperti gambar berikut:
Selanjutnya, tambahkan kode berikut pada file “package.json”:
"type": "module",
Sehingga file “package.json” terlihat menjadi seperti berikut:
{ "name": "sequelize-app", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "cors": "^2.8.5", "express": "^4.17.1", "mysql2": "^2.2.5", "sequelize": "^6.3.5" } }
Hal ini bertujuan agar kita dapat menggunakan ES6 Module Syntax untuk export dan import module.
#4. Struktur Aplikasi
Agar aplikasi lebih terstruktur rapi, kita akan menerapkan pola MVC (Model-View-Controllers).
Buat folder “config”, “controllers”, “models”, dan “routes” di dalam folder “sequelize-app”.
Kemudian buat file “database.js” di dalam folder “config”, buat file “Product.js” di dalam folder “controllers”, buat file “Product.js” di dalam folder “models”, buat file “routes.js” di dalam folder “routes”, dan buat file “index.js” di dalam folder “sequelize-app”.
Perhatikan gambar berikut untuk lebih jelasnya:
#5. Connect ke Database
Buka file “database.js” yang terdapat pada folder “config”, kemudian ketikan kode berikut:
// import sequelize import { Sequelize } from "sequelize"; // create connection const db = new Sequelize('sequelize_db', 'root', '', { host: 'localhost', dialect: 'mysql' }); // export connection export default db;
#6. Models
Buka file model “Product.js” yang terdapat pada folder “models”, kemudian ketikan kode berikut:
// import sequelize import { Sequelize } from "sequelize"; // import connection import db from "../config/database.js"; // init DataTypes const { DataTypes } = Sequelize; // Define schema const Product = db.define('products', { // Define attributes title: { type: DataTypes.STRING }, price: { type: DataTypes.DOUBLE } },{ // Freeze Table Name freezeTableName: true }); // Export model Product export default Product;
#7. Controllers
Buka file controller “Product.js” yang terdapat pada folder “controllers”, kemudian ketikan kode berikut:
// Import model Product import Product from "../models/Product.js"; // Get semua product export const getProducts = async (req, res) => { try { const product = await Product.findAll(); res.send(product); } catch (err) { console.log(err); } } // Get product berdasarkan id export const getProductById = async (req, res) => { try { const product = await Product.findAll({ where: { id: req.params.id } }); res.send(product[0]); } catch (err) { console.log(err); } } // Create product baru export const createProduct = async (req, res) => { try { await Product.create(req.body); res.json({ "message": "Product Created" }); } catch (err) { console.log(err); } } // Update product berdasarkan id export const updateProduct = async (req, res) => { try { await Product.update(req.body, { where: { id: req.params.id } }); res.json({ "message": "Product Updated" }); } catch (err) { console.log(err); } } // Delete product berdasarkan id export const deleteProduct = async (req, res) => { try { await Product.destroy({ where: { id: req.params.id } }); res.json({ "message": "Product Deleted" }); } catch (err) { console.log(err); } }
#8. Routes
Buka file “routes.js” yang terdapat pada folder “routes”, kemudian ketikan kode berikut:
// Import express import express from "express"; // Import Controller Product import { getProducts, getProductById, createProduct, updateProduct, deleteProduct } from "../controllers/Product.js"; // Init express router const router = express.Router(); // Route get semua product router.get('/products', getProducts); // Route get product by id router.get('/products/:id', getProductById); // Route create product baru router.post('/products', createProduct); // Route update product by id router.put('/products/:id', updateProduct); // Route delete product by id router.delete('/products/:id', deleteProduct); // export router export default router;
#9. Index.js
Buka file “index.js” yang terdapat pada folder “sequelize-app”, kemudian ketikan kode berikut:
// Import express import express from "express"; // Import cors import cors from "cors"; // Import connection import db from "./config/database.js"; // Import router import Router from "./routes/routes.js"; // Init express const app = express(); // use express json app.use(express.json()); // use cors app.use(cors()); // Testing database connection try { await db.authenticate(); console.log('Connection has been established successfully.'); } catch (error) { console.error('Unable to connect to the database:', error); } // use router app.use(Router); // listen on port app.listen(5000, () => console.log('Server running at http://localhost:5000'));
#10. Testing
Untuk memastikan aplikasi berjalan dengan baik, jalankan aplikasi dengan mengetikan perintah berikut pada terminal:
node index
Jika berjalan dengan baik, maka akan tampil seperti gambar berikut:
Pada tutorial ini, saya akan menggunakan POSTMAN untuk melakukan pengujian.
Anda dapat mendownload POSTMAN pada link berikut:
https://www.postman.com/downloads/
Download sesuai dengan OS (Operating System) Anda, kemudian install di komputer Anda!
#10.1 CREATE
Buka POSTMAN, kemudian pilih method “POST” => masukan EndPoint pada kolom URL => pilih Body => pilih raw => pilih application/json => masukan data dalam format json => klik tombol Send.
Seperti gambar berikut:
Jika berhasil, maka akan terdapat message: “Product Created” seperti gambar diatas.
Setelah itu, insert beberapa data lagi untuk mempermudah pengujian.
#10.2 READ
Ubah method menjadi “GET” dengan EndPoint yang sama, kemudian klik tombol “Send”.
Seperti gambar berikut:
Untuk menampilkan product berdasarkan id, tambahkan id pada kolom URL seperti gambar berikut:
Pada gambar diatas, saya menampilkan product dengan id=2.
#10.3 UPDATE
Pilih method “PUT” => masukan EndPoint beserta id product yang akan di update pada kolom URL => pilih Body => pilih raw => pilih application/json => masukan data dalam format json => klik tombol Send.
Seperti gambar berikut:
Jika update berhasil, maka akan terdapat message: “Product Updated” seperti gambar diatas.
#10.4 DELETE
Pilih method “DELETE”, kemudian masukan URL beserta id yang akan di hapus, kemudian klik tombol “Send”.
Seperti gambar berikut:
Jika delete berhasil, maka akan terdapat message: “Product Deleted” seperti gambar diatas.
Pada gambar diatas, saya menghapus product dengan id=1.
Related: Tutorial Membuat RESTful API Menggunakan Node JS, Express, dan MongoDB
Kesimpulan:
Pembahasan kali ini adalah bagaimana membuat RESTful API menggunakan node.js, express, dan sequelize.
Dengan demikian, Anda telah memiliki gambaran bagaimana membuat aplikasi tanpa menulis perintah SQL pada aplikasi.
Jadi tunggu apalagi, Let’s Coding!
Komentar (0)