HTTPQUERY
Bahasa Indonesia

DELETE

Penggunaan

Permintaan DELETE menginstruksikan server untuk menghapus sumber daya target. Server yang menentukan arti penghapusan dalam praktiknya: sumber daya tersebut bisa saja dihapus permanen, diarsipkan, atau ditandai sebagai tidak aktif.

REST API sangat mengandalkan DELETE untuk merepresentasikan penghancuran sumber daya. Sebuah endpoint API seperti DELETE /api/users/123 menandakan maksud yang jelas untuk menghapus catatan pengguna yang diidentifikasi oleh 123. Hal ini memetakan langsung ke pola PUT/POST/GET/DELETE untuk operasi membuat, memperbarui, membaca, dan menghancurkan.

Formulir HTML hanya mendukung GET dan POST. API JavaScript seperti fetch dan XMLHttpRequest mendukung DELETE secara native. Sebagian framework menggunakan POST dengan parameter _method=DELETE sebagai solusi alternatif.

Server merespons dengan salah satu dari beberapa kode status tergantung hasilnya:

Hard delete menghapus sumber daya secara permanen. Permintaan GET berikutnya mengembalikan 404 atau 410 Gone. Soft delete menandai sumber daya sebagai tidak aktif tanpa menghapus data yang mendasarinya. Sumber daya tersebut tetap dapat diambil melalui API admin atau dengan sebuah parameter kueri. 410 mengomunikasikan penghapusan permanen, sedangkan 404 lebih sesuai ketika sumber daya sudah tidak ada lagi pada URI tersebut.

Permintaan DELETE bersifat idempoten. Mengirimkan permintaan yang sama berkali-kali menghasilkan keadaan server yang sama seperti mengirimkan permintaan itu satu kali. Permintaan pertama menghapus sumber daya, dan permintaan berikutnya tidak menimbulkan efek tambahan. Meskipun demikian, kode responsnya bisa berbeda: permintaan pertama mengembalikan 200 OK atau 204 No Content, sedangkan permintaan selanjutnya mengembalikan 404 Not Found atau 410 Gone.

Menghapus sebuah sumber daya

Klien meminta penghapusan sebuah berkas tertentu. Server menghapus berkas itu dan merespons dengan 204 No Content untuk mengonfirmasi tindakan tersebut tanpa badan pesan.

Permintaan

DELETE /uploads/report.pdf HTTP/1.1
Host: api.example.re

Respons

HTTP/1.1 204 No Content

Penghapusan REST API dengan konfirmasi

Sebuah REST API mengembalikan 200 OK disertai badan JSON yang mengonfirmasi penghapusan dan mengidentifikasi sumber daya yang dihapus.

Permintaan

DELETE /api/users/123 HTTP/1.1
Host: api.example.re
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...

Respons

HTTP/1.1 200 OK
Content-Type: application/json

{"deleted": true, "id": 123}

Header Authorization membawa token bearer karena sebagian besar API mewajibkan autentikasi sebelum mengizinkan operasi yang bersifat destruktif.

CORS

Permintaan DELETE lintas origin selalu memicu preflight CORS. Browser mengirimkan permintaan OPTIONS terlebih dahulu untuk memastikan server mengizinkan DELETE pada sumber daya target.

Badan permintaan dan respons

Permintaan DELETE boleh menyertakan badan pesan, tetapi semantiknya tidak terdefinisi. Sebagian perantara menolak permintaan DELETE yang membawa badan pesan karena risiko request smuggling. Sebagian besar API tidak menggunakan badan permintaan untuk DELETE. Ketika badan pesan dibutuhkan, misalnya untuk penghapusan massal, server yang mendefinisikan format yang diharapkan.

Badan respons bergantung pada kode statusnya. Respons 200 OK menyertakan badan pesan yang menjelaskan hasilnya atau mengembalikan sumber daya yang dihapus. Respons 204 No Content mengonfirmasi penghapusan tanpa badan pesan. Respons 202 Accepted menunjukkan bahwa penghapusan telah diantrekan atau sedang berlangsung dan biasanya menyertakan rujukan ke sebuah monitor status.

Kode status respons

204 No Content adalah respons paling umum untuk penghapusan sederhana yang tidak memerlukan badan pesan. 200 OK lebih sesuai ketika server mengembalikan sumber daya yang dihapus atau pesan konfirmasi di dalam badan respons.

202 Accepted menandakan bahwa penghapusan telah diantrekan atau bersifat asinkron. Responsnya biasanya menyertakan header Location atau badan pesan yang menunjuk ke sebuah endpoint status tempat klien memeriksa kemajuannya.

Permintaan berikutnya ke sumber daya yang telah dihapus mengembalikan 404 Not Found atau 410 Gone. Respons 410 menunjukkan bahwa sumber daya itu sebelumnya ada dan dihapus secara sengaja, sedangkan 404 tidak membuat pembedaan semacam itu.