Skip to main content

2. RESTful API with Express.html

Rest api with node js and express

Gambar 1. Pengenalan RESTful API menggunakan Express.js.

Representational State Transfer (REST) mendefinisikan serangkaian standar untuk layanan web. API adalah antarmuka yang digunakan oleh program perangkat lunak untuk saling berkomunikasi. Oleh karena itu, sebuah RESTful API adalah API yang sesuai dengan gaya dan batasan arsitektur REST. Sistem REST bersifat stateless, scalable, cacheable, dan memiliki antarmuka yang seragam.

Kita bisa mengatakan bahwa Representational State Transfer (REST) adalah seperangkat aturan untuk layanan web. Jadi, saat kita bicara tentang RESTful API, kita berbicara tentang antarmuka yang memenuhi aturan-aturan tersebut. Sistem REST ini memiliki beberapa kelebihan, seperti tidak menyimpan status, mudah ditingkatkan (scalable), dapat memanfaatkan cache, dan memiliki antarmuka yang seragam. Dengan menerapkan REST, kita dapat membangun API yang kuat dan efisien untuk memfasilitasi komunikasi antara program-program perangkat lunak.

Saat membangun API yang mengikuti prinsip REST biasanya menggunakan permintaan HTTP. Empat metode HTTP yang paling umum digunakan dalam lingkungan REST adalah GET (untuk membaca data), POST (untuk membuat data baru), PUT (untuk memperbarui data), dan DELETE (untuk menghapus data), yang merupakan metode-metode yang digunakan oleh pengembang untuk menciptakan sistem CRUD. Apa sih CRUD itu?

  1. Create

Create adalah salah satu operasi dasar dalam sistem CRUD yang digunakan untuk membuat atau menambahkan sumber daya baru ke dalam sistem. Dalam konteks RESTful API, operasi create biasanya dilakukan melalui metode HTTP POST.

 

Contoh: Misalkan kita memiliki aplikasi To-Do List, dan kita ingin menambahkan sebuah tugas baru ke dalam daftar tugas. Untuk melakukannya, kita dapat menggunakan operasi create dengan metode POST ke endpoint tertentu yang ditentukan dalam API atau bisa lihat gambar 2.

Gambar 2. Contoh penerapan create menggunakan HTTP POST.

Pada program di gambar 2, kita menggunakan metode POST ke endpoint /tasks[1]  untuk membuat tugas baru. Data tugas yang ingin ditambahkan dikirim melalui body permintaan (req.body). Setelah melakukan validasi atau pemrosesan data yang diperlukan, kita dapat menyimpan data tugas tersebut ke dalam database atau sistem penyimpanan lainnya. Terakhir, kita mengirimkan respons dengan status 201 Created yang menandakan bahwa operasi create berhasil dilakukan, serta memberikan data tugas yang baru ditambahkan sebagai respons.

 

  1. Read

Read adalah operasi dasar dalam sistem CRUD yang digunakan untuk membaca atau mengambil informasi dari sumber daya yang ada dalam sistem. Dalam konteks RESTful API, operasi read biasanya dilakukan melalui metode HTTP GET.

 

Contoh: Misalkan kita memiliki API untuk daftar buku, dan kita ingin mengambil informasi tentang sebuah buku berdasarkan ID-nya. Dalam hal ini, kita dapat menggunakan operasi read dengan metode GET ke endpoint tertentu yang ditentukan dalam API atau bisa lihat gambar 3.

A picture containing text, screenshot, software

Description automatically generated

Gambar 3. Contoh penerapan read menggunakan HTTP GET.

Pada program di gambar 3, kita menggunakan metode GET ke endpoint /books/:id untuk membaca informasi sebuah buku berdasarkan ID-nya. ID buku diperoleh dari parameter URL menggunakan req.params.id. Setelah melakukan pengecekan atau pemrosesan lainnya jika diperlukan, kita melakukan query ke database atau sistem penyimpanan lainnya untuk mendapatkan informasi buku yang sesuai dengan ID yang diminta. Jika buku ditemukan, kita mengirimkan respons dengan status 200 OK dan data buku sebagai respons. Jika buku tidak ditemukan, kita mengirimkan respons dengan status not found (404 Not Found) dan pesan yang sesuai.

 

  1. Update

Update adalah operasi dasar dalam sistem CRUD yang digunakan untuk memperbarui atau mengubah informasi yang ada dalam suatu sumber daya. Dalam konteks RESTful API, operasi update biasanya dilakukan melalui metode HTTP PUT atau PATCH.

 

Contoh: Misalkan kita memiliki API untuk daftar pengguna, dan kita ingin memperbarui informasi pengguna berdasarkan ID-nya. Dalam hal ini, kita dapat menggunakan operasi update dengan metode PUT atau PATCH ke endpoint tertentu yang ditentukan dalam API atau bisa lihat gambar 4.

Gambar 4. Contoh penerapan update menggunakan HTTP PUT.

Pada program di gambar 4, kita menggunakan metode PUT ke endpoint /users/:id[2]  untuk memperbarui informasi pengguna berdasarkan ID-nya. ID pengguna diperoleh dari parameter URL menggunakan req.params.id. Data pembaruan pengguna dikirim melalui body permintaan menggunakan req.body. Setelah melakukan validasi atau pemrosesan lainnya jika diperlukan, kita melakukan update data pengguna ke dalam database atau sistem penyimpanan lainnya menggunakan fungsi updateUserById(userId, updatedUserData). Terakhir, kita mengirimkan respons dengan status 200 OK dan pesan sukses sebagai respons.

 

Perlu dicatat bahwa dalam contoh di atas, digunakan metode PUT untuk mengganti seluruh data pengguna. Jika ingin melakukan pembaruan sebagian data, kita dapat menggunakan metode PATCH yang hanya memperbarui bidang-bidang yang spesifik.

 

  1. Delete

Delete adalah operasi dasar dalam sistem CRUD yang digunakan untuk menghapus sumber daya yang ada dalam sistem. Dalam konteks RESTful API, operasi delete biasanya dilakukan melalui metode HTTP DELETE.

 

Contoh: Misalkan kita memiliki API untuk daftar kontak, dan kita ingin menghapus kontak berdasarkan ID-nya. Dalam hal ini, kita dapat menggunakan operasi delete dengan metode DELETE ke endpoint tertentu yang ditentukan dalam API atau bisa lihat gambar 5.

A screenshot of a computer program

Description automatically generated with medium confidence

Gambar 5. Contoh penerapan delete menggunakan HTTP DELETE.

Pada program di gambar 5, kita menggunakan metode DELETE ke endpoint /contacts/:id[3]  untuk menghapus kontak berdasarkan ID-nya. ID kontak diperoleh dari parameter URL menggunakan req.params.id. Setelah melakukan pengecekan atau pemrosesan lainnya jika diperlukan, kita menghapus kontak dari database atau sistem penyimpanan lainnya menggunakan fungsi deleteContactById(contactId). Terakhir, kita mengirimkan respons dengan status 204 No Content yang menandakan bahwa operasi delete berhasil dilakukan tanpa mengirimkan konten sebagai respons.

 

Penting untuk dicatat bahwa operasi delete bersifat permanen dan menghapus sumber daya yang ada. Oleh karena itu, pastikan untuk menggunakan dengan hati-hati dan mengkonfirmasi tindakan pengguna sebelum menghapus data yang penting.

Membuat Routing Pada Express.js

Pada Express.js, kita dapat menggunakan routing untuk menangani permintaan pada RESTful API. Routing digunakan untuk menentukan bagaimana server akan menanggapi permintaan HTTP yang masuk ke endpoint tertentu. Untuk membuat routing pada Express.js untuk menangani request RESTful API, kalian perlu melakukan langkah-langkah berikut:

  1. Mengimpor modul Express dan membuat instance aplikasi Express:

A picture containing text, screenshot, font

Description automatically generated

Gambar 6. Mengimpor modul express dan membuat instance aplikasi express.

Pada contoh di gambar 6, kita mengimpor modul dari library express yang ditampung pada variabel express. Kemudian membuat instance aplikasi Express dengan menggunakan fungsi expressegg. Kalian dapat menetapkan instance ini ke dalam sebuah variabel seperti app.

  1. Menentukan route dan menangani permintaan HTTP pada masing-masing rute. Express menyediakan metode HTTP yang sesuai untuk setiap operasi CRUD (Create, Read, Update, Delete):

A picture containing text, screenshot, font

Description automatically generated

Gambar 7. Membuat route dengan metode HTTP GET untuk menangani permintaan pada RESTful API.

Pada program di gambar 7, ketika permintaan GET diterima pada route "/api/data", kita dapat membuat perintah untuk mengambil semua data dari sumber daya atau data yang relevan. Setelah itu, kalian dapat mengirim response (res) dengan data yang telah diambil.

A screen shot of a computer code

Description automatically generated with low confidence

Gambar 8. Membuat route dengan metode HTTP GET untuk menangani permintaan pada RESTful API.

Pada program di gambar 8, permintaan GET dengan parameter ID akan ditangani oleh route "/api/data/:id". Kita dapat menangkap nilai ID dari req.params.id dan menggunakannya dalam perintah untuk mengambil data yang sesuai dari sumber daya atau data. Setelah itu, kita dapat mengirim response (res) dengan data yang telah diambil.

A screen shot of a computer code

Description automatically generated with low confidence

Gambar 9. Membuat route dengan metode HTTP POST untuk menangani permintaan pada RESTful API.

Pada program di gambar 9, ketika permintaan POST diterima pada route "/api/data", kita dapat menulis perintah untuk menambahkan data baru ke sumber daya atau data yang relevan. Setelah berhasil menambahkan data, kita dapat mengirim response (res) dengan status 201 (Created) dan pesan sukses.

A screen shot of a computer code

Description automatically generated with low confidence

Gambar 10. Membuat route dengan metode HTTP PUT untuk menangani permintaan pada RESTful API.

Pada program di gambar 10, ketika permintaan PUT diterima pada route "/api/data/:id", kita dapat menangkap nilai ID dari req.params.id dan menggunakan perintah untuk memperbarui data yang sesuai dalam sumber daya atau data. Setelah berhasil memperbarui data, kita dapat mengirim response (res) dengan pesan sukses.

A screen shot of a computer code

Description automatically generated with low confidence
Gambar 11. Membuat route dengan metode HTTP DELETE untuk menangani permintaan pada RESTful API.

Pada program di gambar 11, ketika permintaan DELETE diterima pada route "/api/data/:id", kita dapat menangkap nilai ID dari req.params.id dan menggunakan perintah untuk menghapus data yang sesuai dalam sumber daya atau data. Setelah berhasil menghapus data, kita dapat mengirim response (res) dengan pesan sukses.

  1. Mengatur aplikasi Express agar mendengarkan permintaan pada port yang ditentukan:

A picture containing text, screenshot, font

Description automatically generated

Gambar 12. Menjalankan server dengan permintaan port yang ditentukan.

Pada program di gambar 12, kita dapat mengatur nomor port yang digunakan oleh aplikasi Express dengan nilai 3000. Kemudian, app.listenegg digunakan untuk memulai server dan mendengarkan permintaan pada port tersebut. Ketika server berjalan, pesan "Aplikasi berjalan pada port 3000" akan ditampilkan di konsol.

Dengan mengikuti langkah-langkah di atas, kalian dapat membuat routing pada Express.js untuk menangani request RESTful API. Kalian dapat menyesuaikan logika pada setiap route sesuai kebutuhan. Pastikan untuk menggantikan /api/data dengan route yang sesuai dengan kebutuhan kalian.


 

Quiz

1. Apa yang dimaksud dengan RESTful API?

a. API yang menggunakan permintaan HTTP

b. API yang sesuai dengan gaya dan batasan arsitektur REST

c. API yang digunakan oleh program perangkat lunak

d. API yang memiliki antarmuka seragam

2. Metode HTTP apa yang digunakan untuk operasi create dalam sistem CRUD pada RESTful API?

a. POST

b. GET

c. PUT

d. DELETE

3. Metode HTTP apa yang digunakan untuk operasi read dalam sistem CRUD pada RESTful API?

a. GET

b. POST

c. PUT

d. DELETE

4. Metode HTTP apa yang digunakan untuk operasi update dalam sistem CRUD pada RESTful API?

a. POST

b. GET

c. PUT

d. DELETE

5. Metode HTTP apa yang digunakan untuk operasi delete dalam sistem CRUD pada RESTful API?

a. DELETE

b. POST

c. GET

d. PUT

6. Apa yang dilakukan dalam operasi create pada RESTful API?

a. Membaca data

b. Memperbarui data

c. Menghapus data

d. Membuat data baru

7. Apa yang dilakukan dalam operasi read pada RESTful API?

a. Membaca data

b. Memperbarui data

c. Menghapus data

d. Membuat data baru

8. Apa yang dilakukan dalam operasi update pada RESTful API?

a. Membaca data

b. Memperbarui data

c. Menghapus data

d. Membuat data baru

9. Apa yang dilakukan dalam operasi delete pada RESTful API?

a. Membaca data

b. Memperbarui data

c. Menghapus data

d. Membuat data baru

10 Apa yang digunakan dalam Express.js untuk menentukan bagaimana server akan menanggapi permintaan HTTP yang masuk?

a. Routing

b. Middleware

c. Database

d. Endpoint

 

 

 

 


 

Referensi

CRUD REST API with Node.js, Express, and PostgreSQL - LogRocket Blog

 

 

 


(Optional) penamaan endpoint dapat menggunakan nama yang lebih deskriptif misal '/create-tasks' atau '/tasks/create' agar tidak ambigu.

(Optional) penamaan endpoint dapat menggunakan nama yang lebih deskriptif misal '/update-users/:id' atau '/users/update/:id' agar tidak ambigu. Jika melihat contoh sebelumnya , beberapa orang mungkin akan salah mengira endpoint pada gambar 4 adalah operasi GET.

(Optional) masih sama seperti comment sebelumnya.

Last modified: Monday, 7 August 2023, 10:10 AM