Dalam tutorial ini Anda akan belajar cara membuat RESTful API menggunakan node. js, ekspres, sekuel, dan MySQL
Ini bukan tutorial untuk pemula,
Jika Anda seorang pemula di node. js express, saya sarankan Anda mempelajari terlebih dahulu "Tutorial Express Js untuk Pemula".
Mari kita mulai
Apa itu Sekuel?
Sequelize adalah sebuah node. js ORM berbasis janji (Object Relational Mapping) untuk Postgre, MySQL, MariaDB, SQLite, dan Microsoft SQL Server
Dengan memanfaatkan ORM, Anda dapat dengan mudah membuat aplikasi tanpa menulis perintah SQL (Structured Query Language).
Hal yang sama dengan Mongoose untuk mongoDB
Dalam tutorial ini, saya menggunakan MySQL
Jika Anda juga menggunakan MySQL, Anda akan menyukai tutorial ini
Meskipun tutorial ini menggunakan MySQL, bukan berarti Anda tidak bisa menerapkannya di Postgre, SQLite, atau Microsoft SQL Server, perbedaannya hanya terletak pada koneksi ke database.
Anda bisa melihatnya di dokumentasi sekuel untuk info lebih lengkap
Dapatkan paket hosting diskon 75% dan domain gratis + tambahan diskon 5% dengan menggunakan kupon. MEMIKIRKAN
Pesan sekarang
#1. Titik Akhir Desain
Ini penting
Sebelum membuat RESTful API, ada baiknya terlebih dahulu menentukan EndPoint dari RESTful API yang akan dibuat
EndPoint adalah route dari API yang akan kita buat
RESTful API menggunakan kata kerja HTTP
Kata kerja HTTP yang umum digunakan adalah GET, POST, PUT, dan DELETE
GET untuk mendapatkan data dari server atau lebih dikenal dengan READ, POST untuk CREATE data baru, PUT untuk UPDATE data, dan DELETE untuk menghapus data
Atau lebih dikenal dengan CRUD (Create-Read-Update-Delete)
Pada tutorial kali ini saya akan share cara 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 tabel di database, yaitu tabel produk
Berikut adalah EndPoint plan dari RESTful API yang akan kita buat
#2. Membuat database dan tabel
Buat database baru di MySQL, Anda bisa 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 di atas akan membuat database dengan nama "sequelize_db"
Selanjutnya, buat tabel di database "sequelize_db".
Disini saya membuat tabel dengan nama "produk"
Jika Anda membuat tabel dengan nama yang sama itu lebih baik.
Untuk membuat tabel “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 di atas akan membuat tabel bernama "produk" dengan bidang. id, judul, harga, dibuat, dan diperbarui
Sequelize mengharuskan Anda memiliki bidang. id, createAt, dan updatedAt
Jika Anda tidak memiliki bidang tersebut, maka akan terjadi kesalahan
#3. Instal Express, MySQL2, Sequelize, dan Cors
Buat 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 mana saja, baik di C, D, maupun di Desktop
Folder ini akan menjadi folder proyek utama
Kemudian buka folder "sequelize-app" menggunakan code editor, disini saya menggunakan Visual Studio Code
Saya juga merekomendasikan Anda untuk menggunakan Visual Studio Code
Anda dapat mengunduh Visual Studio Code di tautan berikut dan menginstalnya di komputer Anda
https. // kode. Studio visual. com/
Selanjutnya, buka terminal di Visual Studio Code pada bilah menu terminal
Setelah itu ketikkan perintah berikut untuk membuat file “package. json”
npm init –ySelanjutnya install express, mysql2, sequelize, dan cors dengan mengetikkan perintah berikut di terminal
Seperti gambar berikut ini
Selanjutnya, tambahkan kode berikut pada file "package. json”
"type": "module",_Hingga file "package. json" terlihat 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" } }Ini dimaksudkan agar kita dapat menggunakan Sintaks Modul ES6 untuk mengekspor dan mengimpor modul
#4. Struktur Aplikasi
Agar aplikasi terstruktur lebih 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 folder "config", buat file "Product. js" di folder "controllers", buat file "Product. js" di folder "models", buat file "routes. js" di folder "rute", dan buat file "index. js" di dalam folder "sequelize-app".
Perhatikan gambar berikut untuk lebih jelasnya
#5. Terhubung ke Basis Data
Buka file "database. js" yang terdapat di folder "config", lalu ketikkan 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. Model
Buka file model "Product. js" yang terdapat di folder "models", lalu ketikkan 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. Pengontrol
Buka pengontrol file "Product. js" yang terdapat di folder "controllers", lalu ketikkan 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. Rute
Buka file "rute. js" yang terdapat di folder "routes", lalu ketikkan 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. Indeks. js
Buka file “index. js" yang terdapat di folder "sequelize-app", lalu ketikkan kode berikut
CREATE TABLE products( id INT(11) PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200), price DOUBLE, createdAt DATE, updatedAt DATE )ENGINE=INNODB; _0
#10. Pengujian
Untuk memastikan aplikasi berjalan dengan baik, jalankan aplikasi dengan mengetikkan perintah berikut di terminal
CREATE TABLE products( id INT(11) PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200), price DOUBLE, createdAt DATE, updatedAt DATE )ENGINE=INNODB; _1Jika berjalan dengan baik, maka akan muncul seperti gambar berikut
Dalam tutorial ini, saya akan menggunakan POSTMAN untuk melakukan pengujian
Anda dapat mengunduh POSTMAN di tautan berikut
https. // www. tukang pos. com/unduh/
Unduh sesuai dengan OS (Sistem Operasi) Anda, lalu instal di komputer Anda
#10. 1 BUAT
Buka POSTMAN, lalu pilih metode "POST" => masukkan EndPoint pada kolom URL => pilih Body => pilih raw => pilih application/json => masukkan data dalam format json => klik tombol Send
Seperti gambar berikut ini
Jika berhasil, akan ada pesan. "Product Created" seperti pada gambar di atas
Setelah itu, masukkan beberapa data lagi untuk mempermudah pengujian
#10. 2 BACA
Ubah metode menjadi "GET" dengan EndPoint yang sama, lalu klik tombol "Send".
Seperti gambar berikut ini
Untuk menampilkan produk berdasarkan id, tambahkan id pada kolom URL seperti pada gambar berikut
Pada gambar di atas, saya menunjukkan produk dengan id=2
#10. 3 PEMBARUAN
Pilih metode "PUT" => masukkan EndPoint beserta product id yang akan diupdate pada kolom URL => pilih Body => pilih raw => pilih application/json => masukkan data dalam format json => klik Tombol kirim
Seperti gambar berikut ini
Jika pembaruan berhasil, akan ada pesan. "Produk Diperbarui" seperti pada gambar di atas
#10. 4 HAPUS
Pilih metode "HAPUS", lalu masukkan URL beserta id yang akan dihapus, lalu klik tombol "Kirim"
Seperti gambar berikut ini
Jika penghapusan berhasil, akan ada pesan. "Produk Dihapus" seperti pada gambar di atas
Pada gambar di atas, saya menghapus produk dengan id=1
Terkait. Tutorial Membuat RESTful API Menggunakan Node JS, Express, dan MongoDB
Kesimpulan
Pembahasan kali ini adalah cara membuat RESTful API menggunakan node. js, ekspres, dan sekuel
Dengan demikian, Anda memiliki gambaran tentang cara membuat aplikasi tanpa menulis perintah SQL ke aplikasi tersebut