204 No Content
Penggunaan
Kode status 204 No Content dikembalikan sebagai respons terhadap operasi POST, PUT, atau DELETE yang tidak mengharapkan adanya body pesan. Sebagian server justru mengembalikan 200 dengan body kosong dan Content-Length bernilai 0.
Kasus penggunaan praktisnya adalah hasil pengiriman formulir ketika pengguna menekan tombol “Save”. Server menyimpan perubahan tersebut dan mengandalkan klien untuk memberi tahu pengguna bahwa operasi berhasil.
Server tidak boleh menyertakan body pesan pada respons 204. Header seperti Cache-Control dan ETag tetap dikirim dan berlaku untuk dokumen yang diidentifikasi oleh permintaan tersebut.
Status terkait 205 Reset Content juga tidak mengembalikan body, tetapi sebagai tambahan menginstruksikan klien untuk menyetel ulang tampilan dokumen (misalnya, mengosongkan formulir setelah pengiriman). Sebuah GET bersyarat mengembalikan 304 untuk menandakan bahwa sumber daya tidak perlu diambil kembali.
Catatan
DELETE yang mengembalikan 204 adalah pola paling umum untuk penghapusan sumber daya sederhana yang tidak memerlukan body respons. Kembalikan 200 jika respons menyertakan detail konfirmasi atau representasi sumber daya yang dihapus. PUT yang mengembalikan 204 umum dipakai ketika pembaruan berhasil dan klien tidak perlu menerima kembali representasi yang telah diperbarui. 204 berarti “berhasil, tidak ada yang perlu ditampilkan” sedangkan 404 berarti “sumber daya tidak ditemukan.” Kueri koleksi yang kosong mengembalikan 200 dengan array kosong, bukan 204.
Dampak SEO
Google tidak dapat memproses respons 204 karena tidak ada konten yang diterima. URL yang secara konsisten mengembalikan 204 tidak akan muncul pada hasil pencarian.
Contoh
Klien mengirim (POST) data XML ke server untuk mendefinisikan sebuah pekerjaan. Server merespons dengan mengonfirmasi bahwa data diterima dan pekerjaan telah selesai. Tidak ada konten yang perlu dikembalikan, sehingga kode status 204 No Content menjadi pilihan yang tepat.
Permintaan
POST /job HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 68
<?xml version="1.0"?>
<job>
<id>125</id>
<task>G01</task>
</job>
Respons
HTTP/1.1 204 No Content
Referensi kode
.NET
HttpStatusCode.NoContent
Rust
http::StatusCode::NO_CONTENT
Rails
:no_content
Go
http.StatusNoContent
Symfony
Response::HTTP_NO_CONTENT
Python3.5+
http.HTTPStatus.NO_CONTENT
Java
java.net.HttpURLConnection.HTTP_NO_CONTENT
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT
Angular
@angular/common/http/HttpStatusCode.NoContent