HTTP Response Status Code
Pendahuluan
Setiap kali kita melakukan request HTTP ke sebuah API, maka kita akan mendapatkan hasil dalam bentuk HTTP Response.
Dalam HTTP Response ini ada status code berupa 3 angka yang bisa kita analisa.
Misalnya :
- HTTP OK , 200 . Artinya request http kita selesai dan berhasil melakukan proses sesuai dengan Http Method yang kita pilih.
- HTTP Not Found , 404. Artinya request http kita tidak berhasil menemukan resource atau juga Hypermedia yang kita inginkan.
- HTTP Internal Server Error, 500. Artinya terjadi kesalahan di server Http di waktu melakukan permintaan Http Request.
- dll.
Dengan Response Status Code diatas, maka dengan mudah kita bisa memetakan ke program kita untuk melakukan sesuatu terkait dengan response nya tersebut.
- HTTP OK , 200 . Artinya kita bisa menggunakan hasil responsenya untuk melanjutkan ke proses selanjutnya
- HTTP Not Found , 404. Artinya aplikasi kita bisa menginformasikan ke frontend atau aplikasi lain bahwa request mereka salah karena tidak ditemukan.
- HTTP Internal Server Error, 500. Artinya terjadi kesalahan di server Http di waktu melakukan permintaan Http Request.
- dll.
Mestinya Response Status Code ini yang menjadi patokan awal kita ketika menerima response Http untuk langkah/proses selanjutnya.
Kenapa perlu sih ?
Ok..ok, tentu saja perlu.
Secara sederhana, Response Status Code ini diperlukan sebagai standar agreement antara client dan server mengenai status dari sebuah HTTP Request.
Protokol HTTP dari awal memang didesain untuk stateles, dimana didesain agar Server tidak membutuhkan informasi dari request lain sebelumnya untuk menjalankan request saat itu dari client.
Oleh karenanya, setiap request harus membawa informasi selengkap-lengkapnya untuk memenuhi request nya pada saat itu.
Ada yang membawa cookie, authenticationKey, header, dll.
Yang diminta, diupdate, diubah, adalah resource, yang berbentuk Hypermedia
Implementasi dari server yang menerima request juga bisa macam-macam, tergantung dari implementornya.
Banyaknya cara, sumber daya, implementor, dan kasus network yang bisa saja terjadi di dalam satu request response Http, tentunya harus diinfokan ke client.
Dan kasus-kasus itu harus dimengerti baik oleh sisi client ataupun sisi server yang akan mengirimkan informasi tersebut.
Oleh karenanya perlu dilakukan pembuatan Status Code yang seragam dan disepakati oleh kedua pihak, client dan server.
Apakah ada spesifikasinya ?
Tentu saja ada .
Spesifikasi nya di RFC 9110
Dan di RFC 4918, RFC 8470, RFC 8297, dll.
Definisinya secara terjemahan bebas :
Status Code adalah 3 digit angka yang menginformasikan mengenai hasil dari http request dan semantik/arti dari response.
Sehingga memang Status Code ini bukan hanya penomoran biasa saja.
Ada Semantik atau makna dari penomoran tersebut.
Status code yang valid itu dalam rentang 100 s/d 599, dan tentunya bisa extensible dari code yang sudah ada sekarang. Tapi tetap dalam rentang 100 s/d 599 tersebut.
Status code yang valid itu juga dikelola daftarnya oleh The Internet Assigned Numbers Authority (IANA)
Untuk memudahkan pengguna HTTP, maka Status Code diatas dikelompokkan dalam 5 kategori :
- 1xx , response bersifat informasi saja.
- 2xx , http request nya berhasil, tidak bermasalah, dan dijalankan di sisi server.
- 3xx , perlu tindakan tambahan dari sisi client agar http requestnya bisa dijalankan sempurna.
- 4xx , requestnya dari client ada yang kurang parameter, isi body, httpHeader, atau lainnya, sehingga tidak bisa dilanjutkan.
- 5xx , requestnya sudah valid, tapi gagal di jalankan oleh server.
Kalau mau lebih sederhana, maka :
- 1xx , dicuekin saja. Ini lebih kepada status informasi dan juga antar host saja.
- 2xx , requestnya berhasil.
- 3xx , ada redirection ke host yang lain.
- 4xx , ada kesalahan disisi requestnya client.
- 5xx , ada kesalahan disisi pemrosesan di server.
Kalau ternyata ada Http Response yang dikirimkan dalam rentang diluar 100 s/d 599 tersebut, maka anggaplah itu sebagai server error 5xx (server error).
Ada daftarnya ?
Coba kita lihat daftar HTTP Status Code nya :
1xx
- 100 Continue
- 101 Switching Protocols
- 102 Processing (WebDAV)
- 103 Early Hint
- 104-199 Unassigned
2xx
- 200 OK
- 201 Created
- 202 Accepted
- 203 Non-Authoritative Information
- 204 No Content
- 205 Reset Content
- 206 Partial Content
- 207 Multi-StatUS (WebDAV)
- 208 Already Reported (WebDAV)
- 209-225 Unassigned
- 226 IM Used
- 227-299 Unassigned
3xx
- 300 Multiple Choices
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 305 Use Proxy
- 306 unused
- 307 Temporary Redirect
- 308 Permanent Redirect
- 309-399 Unassigned
4xx
- 400 Bad Request
- 401 Unauthorized
- 402 Payment Required
- 403 Forbidden
- 404 Not Found
- 405 Method Not Allowed
- 406 Not Acceptable
- 407 Proxy Authentication Required
- 408 Request Timeout
- 409 Conflict
- 410 Gone
- 411 Length Required
- 412 Precondition Failed
- 413 Payload Too Large
- 414 URI Too Long
- 415 Unsupported Media Type
- 416 Range Not Satisfiable
- 417 Expectation Failed
- 418 Unused
- 421 Misdirected Request
- 422 Unprocessable Entity (WebDAV)
- 423 Locked (WebDAV)
- 424 Failed Dependency (WebDAV)
- 425 Too Early
- 426 Upgrade Required
- 428 Precondition Required
- 429 Too Many Requests
- 431 Request Header Fields Too Large
- 432-450 Unassigned
- 451 Unavailable For Legal Reasons
- 452-499 Unassigned
5xx
- 500 Internal Server Error
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
- 505 HTTP Version Not Supported
- 506 Variant Also Negotiates
- 507 Insufficient Storage (WebDAV)
- 508 Loop Detected (WebDAV)
- 509 Unassigned
- 510 Not Extended (OBSOLETED)
- 511 Network Authentication Required
- 512-599 Unassigned
List diatas bisa dilihat dari IANA HTTP Status Code Registry
Kita lanjut ke Part 2