Mempelajari cara membangun database sederhana untuk menambah, memperbarui, dan menghapus todos dengan Node. js, MySQL, dan Ekspres
setahun yang lalu • 10 mnt dibaca
Oleh Ekekenta Odionyenfe. C
Daftar Isi
Node. js umumnya digunakan bersamaan dengan database NoSQL seperti MongoDB, meskipun juga bekerja dengan baik dengan database relasional seperti MySQL, PostgreSQL, dan lainnya. MySQL telah ada selama beberapa dekade dan merupakan salah satu sistem manajemen basis data relasional (RDBMS) yang banyak digunakan. Basis data sumber paling terbuka di dunia adalah RDBMS yang ideal untuk aplikasi kecil dan besar
Tutorial ini akan mengeksplorasi cara membangun REST API dengan Express dan MySQL dengan membuat database sederhana untuk menambah, memperbarui, dan menghapus todos. Anda dapat mengikuti dengan mengkloning repositori GitHub untuk proyek ini. Mari kita mulai
Prasyarat
Tutorial ini adalah demonstrasi langsung. Pastikan Anda memiliki yang berikut sebelum memulai
- Server MySQL diinstal di komputer Anda
- Node. js diinstal di komputer Anda
Semua demonstrasi akan menggunakan Ubuntu 20. 04 dengan Node 14 LTS. Ini juga berfungsi untuk sistem operasi lain dan versi Linux lainnya
Apa itu REST?
REST (Representational State Transfer) adalah gaya arsitektur perangkat lunak yang dibuat pengembang untuk membantu menciptakan dan mengembangkan arsitektur World Wide Web. REST menentukan seperangkat kriteria tentang bagaimana arsitektur sistem hypermedia terdistribusi skala Internet, seperti Web, harus beroperasi. Ini adalah salah satu dari berbagai cara aplikasi, server, dan situs web dapat mengkomunikasikan data dan layanan. Ini umumnya memberikan aturan tentang bagaimana pengembang yang bekerja dengan data dan layanan mewakili elemen melalui API. Program lain mungkin secara tepat meminta dan menerima data dan layanan yang dapat diakses oleh API
Mengapa menggunakan REST?
REST memiliki beberapa karakteristik unik yang menjadikannya salah satu gaya arsitektur perangkat lunak teratas yang banyak digunakan oleh insinyur perangkat lunak
- Ini ringan. REST API menggunakan standar HTTP. Dengan demikian Anda dapat menggunakan XML, JSON, HTML, dan format data lainnya. Oleh karena itu, REST API cepat dan ringan, menjadikannya pilihan yang sangat baik untuk mengembangkan aplikasi seluler, perangkat internet untuk segala hal, dan aplikasi lainnya
- Itu independen. Pemisahan klien dan server dalam REST API membuatnya independen. Protokol REST memisahkan penyimpanan data dan antarmuka pengguna dari server, sehingga memudahkan pengembang untuk berkolaborasi dalam membangun sebuah proyek
- Ini dapat diskalakan dan fleksibel. REST API dapat diskalakan dan fleksibel untuk digunakan karena pemisahan klien dan server, memungkinkan pengembang untuk mengintegrasikan REST API tanpa upaya ekstra apa pun.
- Itu tanpa kewarganegaraan. Panggilan dilakukan ke REST secara independen, dan masing-masing panggilan ini berisi semua data untuk menyelesaikan permintaan
- Ini memiliki antarmuka seragam yang memungkinkan evolusi independen dari aplikasi tanpa memiliki layanan aplikasi atau model dan tindakan yang digabungkan secara erat ke lapisan API itu sendiri
- Ini adalah sistem arsitektur berlapis yang membangun hierarki yang membantu menciptakan aplikasi yang lebih skalabel dan modular
Sekilas tentang database MySQL
MySQL adalah sistem manajemen basis data relasional sumber terbuka (RDBMS). Ini adalah sistem database yang paling populer digunakan dengan PHP. MySQL adalah layanan database terkelola penuh yang digunakan untuk menerapkan aplikasi cloud-native. HeatWave, akselerator kueri kinerja tinggi terintegrasi, meningkatkan kinerja MySQL hingga 5400x
MySQL dikembangkan, didistribusikan, dan didukung oleh Oracle Corporation dengan fitur-fitur berikut
- Data dalam database MySQL hidup dalam tabel yang terdiri dari kolom dan baris
- MySQL adalah sistem basis data yang berjalan di server
- MySQL sangat ideal untuk aplikasi kecil dan besar
- MySQL adalah sistem database yang sangat cepat, andal, dan mudah digunakan. Ini menggunakan SQL standar
- MySQL mengkompilasi pada beberapa platform
Membuat Node. aplikasi js
Sekarang kita telah menjelajahi apa itu REST, dan memiliki tinjauan singkat tentang database MySQL, mari selami pembuatan aplikasi RESTFul kita. Pertama, kita perlu membuat folder untuk proyek kita dengan perintah di bawah ini
mkdir rest-with-mysql && cd rest-with-mysqlMembuat folder baru untuk proyekPerintah di atas akan membuat folder rest-with-MySQL dan mengubah direktori ke folder tersebut. Selanjutnya, kita akan menginisialisasi node baru. proyek js dengan perintah di bawah ini
npm init -y_Menginisialisasi Node baru. proyek jsPerintah di atas akan menginisialisasi Node baru. js, melewatkan semua petunjuk untuk detail proyek. Perintah juga akan membuat sebuah paket. json di direktori root proyek kami, yang akan merekam semua metadata penting tentang proyek kami. Anda dapat memutuskan untuk mengikuti petunjuk untuk memasukkan detail proyek dengan menghapus bendera dari perintah
Selanjutnya, kami akan menginstal dependensi yang kami perlukan untuk proyek kami
npm install express MySQL cors Memasang KorsPerintah di atas akan membutuhkan sedikit waktu untuk diselesaikan, tetapi kita akan menginstal Express, MySQL, dan Cors di bagian akhir. Terakhir, mari kita lihat struktur proyek kita. Di akhir tutorial ini, struktur proyek kita akan terlihat seperti ini
Menyiapkan server Ekspres
Sekarang setelah kita menginstal dependensi, mari kita gunakan dengan menyiapkan server ekspres terlebih dahulu
Buat aplikasi. js dan tambahkan potongan kode berikut di bawahnya. Kami akan mengimpor yang berikut ini
- Cepat. Untuk membuat server kami
- Kor. Untuk mengizinkan dan mengalihkan sumber daya permintaan
- Router. Di sinilah rute API kita akan ditentukan nanti di bagian ini
- AppError dan errorHandler. Ini adalah fungsi penangan kesalahan global kami. Kami akan membuatnya nanti
Selanjutnya, kita membuat instance aplikasi dari express, menggunakan express. json() middleware di aplikasi kami untuk mem-parsing badan URL yang disandikan. Akhirnya, kami membuat middleware router API kami mendengarkan permintaan masuk ke URL yang ditentukan
Kemudian, kami memeriksa URL yang hilang dari titik akhir kami dan memberikan kesalahan 404 kepada pengguna jika diakses. Penangan kesalahan global akan menangani ini (kami akan membuatnya di bagian selanjutnya)
app.use(api, router); app.all("*", (req, res, next) => { next(new AppError(`The URL ${req.originalUrl} does not exists`, 404)); }); app.use(errorHandler); ..._Memeriksa titik akhir misi dan mengarahkan pengguna ke 404 jika mereka mencapainyaTerakhir, kami akan mengonfigurasi aplikasi kami untuk mendengarkan port 3000
const PORT = 3000; app.listen(PORT, () => { console.log(`server running on port ${PORT}`); }); module.exports = app;Memilih port 3000 untuk port mendengarkan kamiSiapkan dan sambungkan ke MySQL
Sekarang, kami telah menyiapkan server Express kami. Mari kita lanjutkan dan siapkan Database MySQL kita. Pertama, kita akan membuka shell MySQL kita dengan perintah di bawah ini
//On Windows MySQL //Ubuntu mysql -u root -pMembuka cangkangPerintah di atas akan meminta kata sandi root Anda
Masukkan kata sandi dan tekan tombol Enter untuk melanjutkan. Jika semuanya berjalan dengan baik, Anda akan melihat keluaran yang mirip dengan tangkapan layar di bawah ini di terminal Anda
Selanjutnya, jalankan pernyataan SQL di bawah ini di shell MySQL Anda untuk membuat database todos kami
CREATE DATABASE todos Membuat todos DBKemudian, jalankan perintah di bawah ini untuk membuat tabel todolist kita. Tabel akan memiliki bidang id, nama, status, tanggal_dibuat. Id yang diajukan akan menjadi milik meja kami
CREATE TABLE todolist(id int NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, status varchar(50), date_created DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id)); _Menginisialisasi tabel todolistSelanjutnya, buat folder layanan di direktori root proyek kami. Di folder layanan, buat db. js dan tambahkan potongan kode berikut di bawahnya
const mysql = require('mysql'); const conn = mysql.createConnection({ host: "localhost", user: "root", password: "1234", database: "todos", }); conn.connect(); module.exports = conn;Menghubungkan ke database MySQL dengan metode createConnectionKode di atas akan terhubung ke database MySQL kami menggunakan metode MySQL createConnection. Metode createConnection menggunakan host, nama pengguna, kata sandi, dan nama basis data sebagai parameter yang diperlukan
Membuat pengontrol aplikasi
Kami telah berhasil menghubungkan database MySQL kami. Mari lanjutkan membuat rute untuk aplikasi kita
Di direktori root proyek kami, buat folder controllers, lalu buat file index. js di folder pengontrol
Pertama, kami akan mengimpor penangan kesalahan global kami dan koneksi database MySQL kami
npm init -y0Mengimpor penangan kesalahan globalSelanjutnya, kita akan membuat penangan getAllTodos untuk mengambil semua todo di database kita. Handler ini akan menggunakan metode kueri MySQL, yang menggunakan kueri SQL dan fungsi callback sebagai parameter. Jika terjadi kesalahan selama operasi, kami akan mengembalikan kesalahan tersebut ke pengguna menggunakan kelas AppError. Kemudian, kami mengembalikan data ke pengguna saat operasi berjalan dengan sukses dengan kode status 200
npm init -y1Penangan getAllTodosSelanjutnya, kita akan membuat penangan createTodo untuk menambahkan todo baru ke database kita. Kemudian kami memeriksa apakah klien mengirimkan formulir kosong dan mengembalikan pesan kesalahan 404
Kemudian, kami mendapatkan nama todo dari badan permintaan dan menyetel status setiap todo yang dibuat menjadi pending secara default. Menggunakan metode kueri mysql, kami membuat kueri penyisipan untuk menambahkan todo ke database kami
npm init -y2Penangan createTodoSelanjutnya, kami membuat penangan getTodo untuk mendapatkan todo kami dengan ID. Pertama, kami akan memeriksa apakah id ditentukan dalam parameter permintaan, lalu mengembalikan kesalahan ke klien jika tidak ada yang ditemukan
Kami akan menjalankan pernyataan SQL untuk mendapatkan todo yang id-nya ada di parameter permintaan dan mengembalikannya ke klien
npm init -y3Pengendali getTodoSelanjutnya, kita akan membuat handler updateTodo untuk memperbarui todo kita, kali ini akan memodifikasi todo yang id-nya ada di parameter request untuk diselesaikan
npm init -y4Penangan updateTodoTerakhir, kami akan membuat penangan deleteTodo untuk menghapus todo dari database kami. Kami akan menjalankan pernyataan hapus untuk menghapus todo yang id adalah parameter permintaan
npm init -y5 Handler deleteTodoMembuat penangan kesalahan global
Sekarang, mari kita segera membuat penangan kesalahan global kita. Untuk memulai, buat folder utils di direktori root proyek kami. Kemudian, buat appError. js dan errorHandler. file js. Tambahkan potongan kode berikut di bawah ke appError. file js
Kode di atas membuat kelas AppError yang memperluas kelas Error bawaan. Kami kemudian akan meneruskan pesan kesalahan dan status ke konstruktor kelas Error. Kemudian kami akan memeriksa jenis kesalahan apa yang terjadi di aplikasi kami dengan memulai kode status, dan menambahkan kesalahan tersebut ke pelacakan tumpukan kesalahan
Selanjutnya, buka errorHandler. js dan tambahkan potongan kode di bawah ini
npm init -y7 ErrorHandler. file jsKode di atas akan memeriksa kemungkinan kesalahan dalam aplikasi kita dan mengirimkan kode kesalahan dan status yang sesuai ke klien tanpa merusak aplikasi kita
Membuat rute aplikasi
Di direktori root proyek kami, buat folder rute, lalu buat file index. js, dan tambahkan potongan kode berikut di bawahnya
npm init -y_8Rute untuk aplikasiKode di atas membuat objek router dari kelas router ekspres. Kemudian kami membuat rute berikut di aplikasi kami
- Dapatkan Rute. untuk mendapatkan semua todos di database kami
- Rute Pos. untuk menambahkan todo baru ke database kami
- Dapatkan Rute. untuk mendapatkan todo dengan id-nya
- Letakkan Rute. untuk memperbarui todo oleh id
- Hapus Rute. untuk menghapus todo oleh id
Kemudian kami mengekspor objek router
Lihat Data dengan Arctype
Sekarang kami telah membuat semua rute kami. Mari sekarang hubungkan ke Arctype untuk memvisualisasikan data di database kita. Untuk melakukannya, kita perlu mengunduh Arctype dari situs resminya. Dapatkan Arctype diunduh dan diinstal, lalu sambungkan database Anda ke sana. Saat Anda meluncurkan Arctype, klik MySQL untuk membuat koneksi - ikuti panduan ini jika Anda memerlukan bantuan
Kemudian, kami akan menambahkan kredensial koneksi kami dan menekan tombol simpan
Kami telah berhasil terhubung ke database kami. Anda akan melihat tabel database kami di sisi kanan dasbor Arctype. Klik tabel todolist untuk menjalankan beberapa kueri di database kami di Arctype
Kami dapat menambahkan catatan baru ke database kami dengan mengklik tab Sisipkan baris
Kami juga dapat mengedit dan menanyakan tabel database kami menggunakan Arctype. dan banyak lagi
Kesimpulan
Anda sekarang mengerti cara membuat REST API menggunakan kerangka kerja Express—instal Express Node. js, membuat database MySQL, dan membuat aplikasi to-do sederhana. Hanya itu yang diperlukan
Mungkin Anda bisa mempelajari lebih lanjut tentang cara menggunakan MySQL dengan Node.js. js di sini. Jangan ragu untuk menghubungi Twitter jika Anda memiliki pertanyaan