, 19 min read
Pada tutorial kali ini Kita akan belajar membuat CRUD Rest API dengan Database MySQL Nest JS supaya kita lebih memahami alur dari framework Nest JS
CRUD atau CREATE, READ, UPDATE , DELETE adalah proses membuat, menampilkan, memodifikasi, menghapus data dari suatu Database yang biasa digunakan dalam membuat aplikasi berbasis data. misalnya Portal Berita, kita bisa menambah, menampilkan, menghapus berita yang di simpan di dalam Database.
Contoh Dabase:
Pastikan kita sudah melakukan persiapan di bawah ini:
Setelah melakukan persiapan yang di sebutkan diatas, saatnya kita kan membuat CRUD, ada beberapa langkah yang harus di lakukan untuk membuat CRUD dengan database MySQL.
Pada contoh kali ini kita akan menggunakan Dabase MySQL, buatlah Database menggunakan Tools seperti MySQL Workbench agar lebih mudah dalam membuat Database karena memiliki tampilan yang cukup baik dan mudah di gunakan.
Pada gambar diatas saya membuat database dengan nama "nestjs_crud"
Apa itu Prisma?
Prisma adalah database Toolkit yang di buat untuk aplikasi berbasis Node JS dan menggunakan bahasa Typescript yang akan memudahkan kita dalam melakukan proses ke Database.
Kenapa Prisma?
Alasan saya menggunakan prisma yaitu karena Prisma memiliki fitur yang cukup lengkap di antaranya adalah
Data Modeling, kita bisa membuat schema seperti table - table, relasi, dengan membuat script schema tanpa harus berhubungan langsung dengan database
Migration, kita bisa melakukan proses migration dari shcema tabel - table yang sudah kita buat menjadi tabel - tabel yang ada di dalam database secara otomatis menggunakan Prisma CLI. Contoh:
plaintext
Synchronize, kita bisa melakukan Synchronize dari database yang sudah ada menjadi script Schema yang bisa kita gunakan untuk melakukan proses Migration atau sebaliknya. Contoh:
plaintext
Masuk ke dalam project yang sudah di buat lalu buka terminal dan masukan perintah
plaintext
atau
plaintext
kemudian masukan perintah pada terminal
plaintext
Setelah menjalankan perintah "npx prisma init" akan terbuat Folder "prisma" yang di dalamnya ada scheme dan juga file ".env" yang berisi settingan untuk koneksi Database.
Untuk settingan MySQL, edit file "prisma/schema.prisma" menjadi seperti berikut init
Typescript
kemudian edit file ".env" sesuai dengan koneksi dan Database MySQL yang sudah di buat sebelumnya
plaintext
Kita akan membuat Module Prisma yang berisi service yang akan di gunakan untuk service lain, jadi fungsi dari service yang akan kita buat ini adalah sebagai penghubung antara service ke Database, untuk lebih mudah di pahami silahkan ikuti saja tutorialnya supaya nanti akan mengerti.
Jalankan perintah untuk membuat Module
plaintext
atau
plaintext
kemudian Buat Service dengan perintah:
plaintext
atau
plaintext
perintah di atas kan membuat file baru seperti gambar dibawah ini
Edit file "prisma.service.ts" menjadi :
Typescript
Edit Module menjadi Global
Edit module menjadi Global supaya apa yang ada di module bisa di gunakan tanpa harus mengiport Module satu persatu.
Typescript
Untuk menggunakan service berbeda module kita harus mengexport terlebih dahulu, contohnya :
plaintext
Typescript
Lakukan migrate schema supaya tersinkron dengan database yang sudah kita buat dengan mamasukan perintah
plaintext
Setelah melakukan perintah diatas pastikan kita check database apakah sudah terbentuk table baru dengan nama biodata.
setelah itu masukan perintah
plaintext
Pada contoh kali ini saya akan membuat CRUD Biodata yang akan menampung data dari siswa seperti Nama, NIK, dan Alamat.
Masukan perintah:
plaintext
Perintah diatas adalah perintah untuk membuat CRUD secara cepat tanpa harus membuat Module, Service, Controller satu persatu.
Pilih REST API karena kita akan membuat CRUD Rest API
Setelah melakukan perintah diatas maka akan terbentuk struktur folder seperti
Hapus folder "entities" karena tidak kita gunakan
Apa itu Data Transfer Object atau DTO?
DTO adalah Type, atau Class yang berisi nama - nama parameter dan type data yang dikirimkan dari Request yang digunakan untuk tujuan agar parameter yang dikirim melalui Request sesuai dengan apa yang di inginkan dan bisa digunakan untuk proses Validasi terhadap data yang dikirim.
Pada gambar diatas sebelum request ke controller, request akan melalu DTO terlebih dahulu untuk memastikan apakah data yang dikirim sesuai atau tidak. Jika sesuai maka akan di teruskan ke controller dengan data yang dikirim, jika tidak sesuai maka akan mengirimkan Error bahwa data yang dikirim tidak sesuai apa yang ada di DTO
Setelah memahami DTO selanjutnya kita akan edit DTO sesuai dengan schema Table yang sebelumnya kita buat.
Kita akan menginstall library untuk Validatornya
plaintext
atau
plaintext
Edit file "crud/biodata.dto/create-biodatum.dto.ts"
Typescript
Menjadi
Typescript
Edit controller "crud/biodata/biodata.controller.ts"
Typescript
Menjadi
Typescript
Pada file di atas kita menambahkan
plaintext
Fungsi di atas supaya Class Validator yang ada di DTO bekerja, kalau tidak menambahkan script di atas maka Validator tidak akan berkerja
Typescript
Penjelasan
plaintext
adalah nama controller yang sekaligus menjadi route yang bisa langsung di akses via API.
Untuk contoh controller di atas, akses API nya adalah http://localhost:3000/biodata
@Post(), @Get(),@Patch(':id'), @Delete(':id') adalah Request Method dari client
Edit file "biodata.service.ts"
Typescript
Menjadi
Typescript
Penjelasan
Jalankan aplikasi dengan terminal dan masukan perintah\
plaintext
atau
plaintext
Endpoint dari NestJS secara default adalah port 3000, jadi untuk membuat request URL nya adalah http://localhost:3000
Jika tidak ada error makan akan tampil seperti gambar dibawah ini
Untuk menguji API yang sudah kita buat saya akan menggunakan Postman
pada gambar Postman di atas terjadi error karena kita memberi NIK dengan type data String, berarti DTO Validator sudah bekerja dengan baik
pada gambar diatas kita berhasil membuat Biodata
Test menampilkan semua Biodata yang sudah kita buat
Test menampilkan Biodata berdasarkan id
Test mengubah Biodata berdasarkan id
Test menghapus Biodata berdasarkan id
Sampai sejauh ini kita sudah berhasil membuat Rest API dengan contoh biodata, untuk pengembangan lebih lanjut silahkan membaca dokumentasi dari Nenst JS melalui Website resminya.
https://github.com/mister-coding/basic-crud-nestjs
Related Posts
Nest JS : Speed Up API with Cache Redis
Meningkatkan perfoma API dengan Cache menggunakan Redis dengan contoh menggunakan Database PostgreSQL dan Prisma
Nest JS Micoservices with GRPC and Monorepo
Kita akan belajar bagaimana membuat aplikasi microservices menggunakan Nest JS dan GRPC menggunakan Monorepo (Single Repository)
Rate limiting Nest JS
Rate limiter adalah sebuah mekanisme yang digunakan untuk mengatur laju atau frekuensi akses terhadap suatu sumber daya atau layanan. Tujuannya adalah untuk mencegah penyalahgunaan atau kelebihan beban terhadap sistem tersebut
Upload gambar pada Framwork Nest JS
Pada tutorial kali ini Kita akan belajar mengupload gambar pada Framwork Nest JS dan menseting supaya file bisa di akses menggunakan HTTP
NestJS Prisma Multi Connections
Prisma adalah Modern ORM yang memungkinakan kita membuat koneksi dan Query ke database menjadi lebih mudah dan lebih sederhana di bandingkan kalau kita tanpa menggunakan ORM.
Membuat Multi Thread atau Cluster mode pada nest JS (10x lebih cepat)
Node JS / Nest JS memiliki cara kerja Single Thread yang artinya hanya bisa menjalankan tugas satu persatu sehingga pada saat ada banyak tugas yang sedang di kerjakan harus bergantian beda dengan Multi Thread yang bisa menjalankan tugas secara bersamaan.
Membuat CRUD Rest API dengan Database MySQL Nest JS
Pada tutorial kali ini Kita akan belajar membuat CRUD Rest API dengan Database MySQL Nest JS supaya kita lebih memahami alur dari framework Nest JS
Konsep penting yang wajib di ketahui di dalam Framework NestJS
Pada tutorial kali ini Kita akan memahami Konsep penting yang wajib di ketahui di dalam Framework NestJS
Berkenalan dengan NestJS dan cara install NestJS
Pada tutorial kali ini kita akan berkenalan dengan NestJS, memahami cara kerja NestJS dan cara menginstall NestJS
Tags