Method REST API

Method dalam REST API memiliki fungsi yang berbeda-beda untuk menangani permintaan dari client ke server. Berikut adalah beberapa method utama dalam REST API beserta fungsinya:

1. GET

  • Fungsi: Mengambil data dari server.
  • Contoh: GET /users → Mengambil daftar semua pengguna.

2. POST

  • Fungsi: Mengirim atau menambahkan data baru ke server.
  • Contoh: POST /users dengan body { "name": "John Doe" } → Menambahkan pengguna baru.

3. PUT

  • Fungsi: Memperbarui data yang sudah ada di server secara keseluruhan.
  • Contoh: PUT /users/1 dengan body { "name": "Jane Doe", "email": "jane@example.com" } → Memperbarui semua data pengguna dengan ID 1.

4. PATCH

  • Fungsi: Memperbarui sebagian data yang ada di server.
  • Contoh: PATCH /users/1 dengan body { "email": "jane@example.com" } → Hanya memperbarui email pengguna dengan ID 1.

5. DELETE

  • Fungsi: Menghapus data dari server.
  • Contoh: DELETE /users/1 → Menghapus pengguna dengan ID 1.

6. OPTIONS

  • Fungsi: Menampilkan method yang tersedia untuk suatu resource.
  • Contoh: OPTIONS /users → Memberikan daftar method yang bisa digunakan (GET, POST, PUT, DELETE).

7. HEAD

  • Fungsi: Sama seperti GET, tetapi hanya mengambil header respons tanpa isi body.
  • Contoh: HEAD /users → Mengecek apakah resource ada tanpa mengunduh datanya.

Method ini digunakan dalam berbagai layanan REST API untuk mengelola data secara efisien dan sesuai standar HTTP.

Perbedaan PUT dan PATCH

PUT

  • Mengganti seluruh sumber daya dengan yang baru.
  • Jika suatu properti tidak disertakan dalam permintaan, properti tersebut akan dihapus atau di-reset ke default.
  • Idempotent, artinya jika permintaan yang sama dikirim berkali-kali, hasilnya akan tetap sama.

Contoh: Misalkan ada data pengguna:

{   
	"name": "John Doe",   
	"email": "john@example.com",   
	"age": 30 
}
PUT /users/1 Content-Type: application/json { "name": "Jane Doe", "email": "jane@example.com" }

Maka akan menjadi :

{ "name": "Jane Doe", "email": "jane@example.com" }

Properti age hilang karena tidak disertakan dalam permintaan PUT.

Sedangkan PATCH

  • Memperbarui sebagian data tanpa menghapus yang tidak disebutkan.
  • Bukan idempotent dalam beberapa kasus, karena perubahan bisa bersifat kumulatif.

Contoh: Misalkan ada data pengguna yang sama seperti sebelumnya. Jika kita mengirim permintaan PATCH berikut:

PATCH /users/1 Content-Type: application/json  {   "name": "Jane Doe" }

Maka data pengguna setelah PATCH tetap mempertahankan properti yang ada dan hanya memperbarui name:

{   
	"name": "Jane Doe",   
	"email": "john@example.com",   
	"age": 30 
}

Properti email dan age tetap ada karena PATCH hanya mengganti properti yang disebutkan.

Kesimpulan

AspekPUTPATCH
UpdateSeluruh sumber dayaSebagian sumber daya
IdempotentYaTidak selalu
Data yang tidak dikirimDihapus atau di-resetTetap ada
Digunakan untukMengganti seluruh objekMemodifikasi sebagian data

Gunakan PUT jika ingin mengganti seluruh objek, dan gunakan PATCH jika hanya ingin memperbarui sebagian atribut tanpa menghapus data yang lain.