Status code HTTP
Semua status code HTTP terdaftar: artinya, kapan muncul, dan di mana didefinisikan.
Select a code
Apa itu status code HTTP?
Setiap response HTTP diawali status code tiga digit yang menjelaskan apa yang terjadi pada request. Digit pertama menunjukkan kelasnya: 1xx berarti informasi, 2xx berarti sukses, 3xx berarti redirect, 4xx berarti request-nya salah, dan 5xx berarti server gagal.
Kode-kode ini didefinisikan di RFC 9110, HTTP Semantics, yang menggantikan RFC 7231 pada 2022, dan di beberapa RFC lain seperti RFC 6585 untuk 429 Too Many Requests. IANA mengelola registry resminya. RFC 9110 mengganti nama dua kode: 413 sekarang Content Too Large (sebelumnya Payload Too Large) dan 422 Unprocessable Content (sebelumnya Unprocessable Entity). Nomor dan perilakunya tidak berubah.
Beberapa kode yang Anda temui tidak ada di registry. nginx mencatat 499 saat klien menutup koneksi sebelum response siap, Cloudflare mengirim 520 sampai 526 saat tidak mendapat response yang bisa dipakai dari server origin, dan Laravel mengirim 419 saat token CSRF sebuah form sudah kedaluwarsa. Kode-kode ini didaftar terpisah dan ditandai tidak resmi.
Status code adalah hal pertama yang harus dicek dalam tes API, karena sisa response bergantung padanya. 201 Created memberi tahu bahwa POST membuat resource baru, 404 bahwa resource tidak ada, dan 500 bahwa server gagal, dan dalam hal ini body-nya bisa berupa halaman error, bukan JSON yang Anda harapkan.
Cara memakai tool ini
- 1Telusuri daftarnya, yang dikelompokkan dari 1xx sampai 5xx dengan kode tidak resmi di akhir, atau filter dengan tombol kelas.
- 2Cari berdasarkan nomor, nama, atau gejala, seperti
404,5xx,redirect,timeout, atau nama lama sepertiUnprocessable Entity. Tekan / untuk langsung ke kotak pencarian dari mana pun di halaman. - 3Pilih sebuah kode, atau telusuri daftar dengan tombol panah, untuk melihat artinya, kapan muncul, spesifikasi yang mendefinisikannya, dan kode terkait untuk dibandingkan.
- 4Salin perintah
curldi bawah Try it agar endpoint status testingapis.com mengembalikan kode itu, atau salin link:/id/tools/http-status/#429langsung membuka 429.
Pemecahan masalah
- Dapat 401 padahal sudah mengirim token
- Token-nya kedaluwarsa, formatnya salah, dikirim di header yang salah, atau tidak ada prefix
Bearer. Header responseWWW-Authenticatesering menyebutkan yang mana. Sebaliknya, 403 berarti token valid tetapi tidak punya izin. - Dapat 415 untuk body JSON
- Request tidak punya header
Content-Type: application/json, jadi server tidak memperlakukan body sebagai JSON.-ddi curl mengirimapplication/x-www-form-urlencodedkecuali Anda mengatur header-nya. - POST berubah menjadi GET setelah redirect
- Klien mengikuti 301 dan 302 dengan mengulang request sebagai GET tanpa body. Server yang harus mempertahankan method sebaiknya mengirim 307 atau 308.
- Dapat 502 atau 504 dari load balancer
- Proxy di depan aplikasi tidak mendapat jawaban yang valid: 502 saat aplikasi crash atau menutup koneksi, 504 saat aplikasi butuh waktu lebih lama dari timeout proxy. Log aplikasi itu sendiri menunjukkan penyebabnya.
- 499 di log nginx
- Klien menyerah sebelum response siap: pengguna meninggalkan halaman, atau klien atau proxy di hulu kena timeout. Penyebab yang paling umum adalah request backend yang lambat.
Pertanyaan umum
Apa beda 401 dan 403?
401 Unauthorized berarti server tidak tahu siapa Anda: kredensialnya tidak ada, kedaluwarsa, atau salah. 403 Forbidden berarti server tahu siapa Anda, tetapi identitas itu tidak diizinkan melakukan hal tersebut. Login ulang bisa memperbaiki 401, tetapi tidak 403.
Apakah API sebaiknya mengembalikan 400 atau 422 untuk input yang tidak valid?
Keduanya dipakai. Konvensi yang umum adalah 400 untuk request yang sama sekali tidak bisa dibaca server, seperti JSON yang rusak, dan 422 untuk data yang formatnya benar tetapi melanggar aturan, seperti field wajib yang hilang atau email yang tidak valid.
Apa beda 502, 503, dan 504?
Ketiganya biasanya berasal dari proxy atau load balancer di depan aplikasi. 502 Bad Gateway berarti proxy menerima response yang tidak valid dari server di belakangnya, 503 Service Unavailable berarti layanan sedang kelebihan beban atau dalam maintenance, dan 504 Gateway Timeout berarti server di belakangnya tidak menjawab tepat waktu.
Kode redirect mana yang sebaiknya saya pakai?
301 dan 308 bersifat permanen, 302 dan 307 sementara. 307 dan 308 mewajibkan klien mengulang request dengan method dan body yang sama, sedangkan klien biasanya mengubah POST menjadi GET setelah 301 atau 302. Gunakan 303 See Other untuk mengarahkan klien ke halaman hasil setelah POST.
Apakah 418 I'm a teapot status code sungguhan?
Kode ini berasal dari RFC 2324, lelucon April Mop tahun 1998 tentang mengendalikan teko kopi. RFC 9110 mencantumkan 418 sebagai tidak dipakai tetapi dicadangkan, karena sudah begitu banyak software yang mengenalinya. Kode ini tidak dimaksudkan untuk error sungguhan.
Bagaimana cara menguji cara aplikasi saya menangani status code tertentu?
Panggil endpoint yang mengembalikan kode yang Anda minta. GET https://api.testingapis.com/api/status/503 menjawab dengan 503 beserta header yang biasanya menyertai status itu, seperti Retry-After. Kode apa pun dari 200 sampai 599 bisa dipakai.