Kode status HTTP adalah angka tiga digit yang menunjukkan hasil dari permintaan HTTP. Mereka dikelompokkan ke dalam lima kategori, dan memahaminya sangat penting untuk membangun aplikasi web dan API yang kuat. Panduan ini mencakup semua kode status penting yang perlu Anda ketahui.
Kategori Kode Status
Kode status HTTP diatur berdasarkan digit pertama mereka:
- 1xx (Informational): Permintaan diterima, proses berlanjut
- 2xx (Success): Permintaan berhasil diterima, dipahami, dan diterima
- 3xx (Redirection): Tindakan lebih lanjut perlu diambil untuk menyelesaikan permintaan
- 4xx (Client Error): Permintaan mengandung sintaks yang buruk atau tidak dapat dipenuhi
- 5xx (Server Error): Server gagal memenuhi permintaan yang valid
Respons Informasional 1xx
Kode ini jarang terlihat dalam praktik tetapi menunjukkan bahwa server telah menerima header permintaan dan client harus melanjutkan mengirim body permintaan.
100 Continue
Server telah menerima header permintaan dan client harus melanjutkan mengirim body permintaan.
101 Switching Protocols
Server beralih ke protokol yang berbeda sesuai permintaan client (misalnya, upgrade dari HTTP ke WebSocket).
Respons Sukses 2xx
Kode ini menunjukkan bahwa permintaan berhasil diterima, dipahami, dan diterima.
200 OK
Respons standar untuk permintaan HTTP yang berhasil. Respons aktual tergantung pada metode permintaan yang digunakan.
- GET: Resource telah diambil dan ditransmisikan dalam body pesan
- HEAD: Header entity berada dalam body pesan
- POST: Resource yang menggambarkan hasil dari tindakan ditransmisikan dalam body pesan
201 Created
Permintaan telah berhasil dan resource baru telah dibuat sebagai hasilnya. Ini biasanya respons yang dikirim setelah permintaan POST.
204 No Content
Server berhasil memproses permintaan tetapi tidak mengembalikan konten apa pun. Sering digunakan untuk permintaan DELETE.
Pesan Redirect 3xx
Kode ini menunjukkan bahwa tindakan lebih lanjut perlu diambil oleh user agent untuk memenuhi permintaan.
301 Moved Permanently
Resource yang diminta telah dipindahkan secara permanen ke URL baru. Mesin pencari harus memperbarui link mereka ke URL baru.
302 Found (Temporary Redirect)
Resource yang diminta untuk sementara berada di URL yang berbeda. Client harus terus menggunakan URL asli untuk permintaan di masa depan.
304 Not Modified
Resource belum dimodifikasi sejak versi yang ditentukan oleh header permintaan. Client dapat menggunakan versi cache.
Respons Error Client 4xx
Kode ini menunjukkan bahwa ada masalah dengan permintaan. Client tidak boleh mengulangi permintaan tanpa modifikasi.
400 Bad Request
Server tidak dapat memproses permintaan karena error client (sintaks yang salah format, framing pesan permintaan yang tidak valid, atau routing permintaan yang menipu).
401 Unauthorized
Autentikasi diperlukan dan telah gagal atau belum diberikan. Respons harus menyertakan header WWW-Authenticate.
403 Forbidden
Server memahami permintaan tetapi menolak untuk mengotorisasinya. Berbeda dengan 401, mengotentikasi tidak akan mengubah respons server.
404 Not Found
Resource yang diminta tidak dapat ditemukan tetapi mungkin tersedia di masa depan. Ini adalah kode status HTTP yang paling terkenal.
422 Unprocessable Entity
Permintaan berbentuk dengan baik tetapi tidak dapat diikuti karena error semantik. Sering digunakan dalam REST API untuk error validasi.
429 Too Many Requests
Pengguna telah mengirim terlalu banyak permintaan dalam jumlah waktu tertentu (rate limiting).
Respons Error Server 5xx
Kode ini menunjukkan bahwa server gagal memenuhi permintaan yang valid.
500 Internal Server Error
Pesan error generik ketika kondisi yang tidak terduga ditemui dan tidak ada pesan yang lebih spesifik yang cocok.
502 Bad Gateway
Server bertindak sebagai gateway atau proxy dan menerima respons yang tidak valid dari server upstream.
503 Service Unavailable
Server saat ini tidak dapat menangani permintaan karena overload sementara atau pemeliharaan yang dijadwalkan.
504 Gateway Timeout
Server bertindak sebagai gateway atau proxy dan tidak menerima respons tepat waktu dari server upstream.
Penggunaan Kode Status Umum dalam REST API
| Operasi | Sukses | Error |
|---|---|---|
| GET (retrieve) | 200 OK | 404 Not Found |
| POST (create) | 201 Created | 400 Bad Request, 422 Unprocessable Entity |
| PUT (update) | 200 OK | 404 Not Found, 400 Bad Request |
| DELETE | 204 No Content | 404 Not Found |
| Any (auth required) | ā | 401 Unauthorized |
| Any (no permission) | ā | 403 Forbidden |
Praktik Terbaik
Gunakan Kode Status yang Tepat
Selalu gunakan kode status yang paling spesifik yang tersedia. Jangan kembalikan 200 OK untuk error atau 500 untuk error client.
Sertakan Detail Error
Untuk respons 4xx dan 5xx, sertakan body respons dengan detail error:
{
"error": "Validasi gagal",
"message": "Body permintaan mengandung data yang tidak valid",
"details": [
{
"field": "email",
"message": "Format email tidak valid"
}
]
}
Tangani Kode Status dalam Aplikasi Client
Selalu periksa kode status dalam aplikasi client Anda dan tangani error dengan tepat:
// Contoh fetch JavaScript
fetch('/api/users')
.then(response => {
if (!response.ok) {
if (response.status === 404) {
throw new Error('Pengguna tidak ditemukan');
}
if (response.status === 401) {
// Redirect ke login
window.location.href = '/login';
}
throw new Error('Permintaan gagal');
}
return response.json();
})
.then(data => {
// Tangani sukses
})
.catch(error => {
// Tangani error
});
Kesimpulan
Memahami kode status HTTP adalah fundamental untuk pengembangan web. Mereka menyediakan cara standar untuk mengkomunikasikan hasil permintaan HTTP antara client dan server. Dengan menggunakan kode status yang tepat dan menanganinya dengan benar dalam aplikasi Anda, Anda membuat sistem yang lebih kuat, mudah dipelihara, dan ramah pengguna.
Simpan panduan ini di dekat Anda saat membangun API atau men-debug masalah HTTP. Dengan latihan, memilih kode status yang tepat akan menjadi second nature.