Dalam tutorial ini Anda akan belajar cara membuat RESTful API menggunakan node. js, ekspres, sekuel, dan MySQL Show 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. MEMIKIRKANPesan sekarang
#1. Titik Akhir DesainIni 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 tabelBuat 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 CorsBuat 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 –y Selanjutnya install express, mysql2, sequelize, dan cors dengan mengetikkan perintah berikut di terminal npm install express mysql2 sequelize cors 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 AplikasiAgar 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 DataBuka 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. ModelBuka 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. PengontrolBuka 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. RuteBuka 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. jsBuka 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. PengujianUntuk 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;_1 Jika 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 BUATBuka 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 BACAUbah 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 PEMBARUANPilih 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 HAPUSPilih 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 KesimpulanPembahasan 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 |