Kode status HTTP
Kode yang paling sering muncul dari API dan CDN. Kode eksperimental langka tidak disertakan.
| Kode | Nama | Arti |
|---|---|---|
| 200 | OK | Sukses dengan isi |
| 201 | Dibuat | Sumber daya dibuat |
| 204 | Tanpa isi | Sukses, isi kosong |
| 301 | Dipindah permanen | Pengalihan permanen |
| 302 | Ditemukan | Pengalihan sementara |
| 304 | Tidak berubah | Gunakan salinan cache |
| 400 | Permintaan tidak valid | Permintaan klien tidak valid |
| 401 | Tidak terotorisasi | Autentikasi diperlukan / gagal |
| 403 | Dilarang | Terautentikasi tetapi ditolak |
| 404 | Tidak ditemukan | Sumber daya tidak ada |
| 405 | Metode tidak diizinkan | Metode HTTP salah |
| 408 | Permintaan habis waktu | Klien terlalu lambat |
| 409 | Konflik | Konflik status |
| 410 | Telah hilang | Dihapus permanen |
| 422 | Entitas tak dapat diproses | Semantik tidak valid |
| 429 | Terlalu banyak permintaan | Dibatasi laju |
| 500 | Kesalahan server internal | Kesalahan server |
| 502 | Gateway tidak valid | Respons upstream tidak valid |
| 503 | Layanan tidak tersedia | Kelebihan beban / mati |
| 504 | Habis waktu gateway | Habis waktu upstream |
Catatan
- 401 vs 403: kredensial hilang/gagal versus sudah login tapi ditolak.
- CDN dapat mengembalikan 5xx jika origin tidak terjangkau.
Lima kelas kode status
Digit pertama memberi tahu Anda siapa yang bertanggung jawab dan secara kasar apa yang terjadi. 1xx bersifat informasi dan jarang dilihat oleh klien. 2xx berarti berhasil — 200 OK dengan tubuh respons, 204 No Content tanpa tubuh, 206 untuk unduhan parsial. 3xx berarti sumber dayanya ada di tempat lain. 4xx berarti permintaan itu sendiri yang salah: sintaks buruk, kredensial hilang, atau batas laju terlampaui. 5xx berarti server gagal padahal permintaan sudah benar. Membaca hanya digit pertama saja sudah memberi tahu apakah perlu memperbaiki klien atau menaikkan masalah ke sisi server.
Memilih redirect yang tepat
301 dan 308 keduanya berarti permanen; 302 dan 307 keduanya berarti sementara. Perbedaannya terletak pada penanganan metode: 301 dan 302 secara historis membiarkan klien mengubah POST menjadi GET, sedangkan 307 dan 308 mempertahankan metode dan tubuh asli, yang penting bagi API dan pengiriman formulir. Gunakan 301 untuk URL yang benar-benar pindah selamanya, dan 302 atau 307 untuk penataan rute sementara seperti halaman pemeliharaan atau uji A/B. Waspadai rantai redirect — setiap hop tambahan menghabiskan latensi dan ekuitas tautan, jadi redirect langsung ke tujuan akhir.
Mengurai kesalahan 4xx
401 berarti autentikasi tidak ada atau gagal, sehingga mengirim kredensial yang valid dapat menyelesaikannya; 403 berarti permintaan dipahami dan diautentikasi namun tidak diizinkan, dan mencoba lagi dengan kredensial yang sama tidak akan membantu. 404 berarti sumber daya tidak ada; 410 menandakan sumber daya pernah ada dan sengaja dihilangkan. 429 berarti Anda kena batas laju dan harus menurunkan frekuensi permintaan, dengan menghormati header Retry-After. 400 biasanya berarti input salah format, 405 berarti metode salah untuk URL tersebut, dan 422 berarti sintaksnya valid tetapi kontennya gagal validasi.
Membaca kode 5xx
500 adalah error internal yang generik; 502 Bad Gateway berarti server hulu mengembalikan sesuatu yang tidak usable; 503 berarti layanan sedang tidak tersedia atau kelebihan beban; 504 berarti server hulu timed out. Ini adalah masalah server, bukan pemanggil, sehingga penyelesaiannya adalah mencoba lagi dengan backoff, memeriksa kesehatan server hulu, atau mengurangi beban. CDN dapat mengeluarkan 502, 503, atau 504 atas nama origin yang tidak dapat dijangkau, itulah mengapa error yang sama dapat datang dari dua tempat yang sangat berbeda — periksa header server dan cache-status untuk mengetahui penyebabnya.
Kode status dalam praktik: API dan caching
Dua penggunaan sehari-hari yang patut diperhatikan. Pertama, caching: 200 dengan header Cache-Control dapat disimpan, 304 Not Modified memberi tahu klien untuk menggunakan salinannya, dan 5xx seharusnya tidak di-cache. Kedua, API: POST yang membuat sumber daya sebaiknya mengembalikan 201 dengan header Location, DELETE sering mengembalikan 204, dan PATCH yang tidak mengubah apa pun dapat mengembalikan 200 atau 204. Klien yang berperilaku baik mengambil keputusan berdasarkan kelas terlebih dahulu (2xx, 4xx, 5xx) dan hanya kemudian berdasarkan kode tepatnya, sehingga logika retry dan backoff tetap sederhana dan dapat diprediksi.
Pertanyaan umum
- Apa arti kode HTTP 403?
- 403 berarti server memahami dan mengautentikasi permintaan, tetapi menolak memberikan akses ke resource. Berbeda dari 401, login ulang tidak akan menyelesaikannya.
- Apa bedanya redirect HTTP 301 dan 302?
- 301 menandakan perpindahan permanen, jadi klien dan mesin pencari harus memakai URL baru. 302 adalah redirect sementara dan URL lama tetap berlaku.
- Apa arti HTTP 429 dan bagaimana cara memperbaikinya?
- 429 berarti Anda telah mencapai batas laju permintaan. Perlambat permintaan dan patuhi header Retry-After jika server mengirimkannya.