HTTP Response Status Code - 5XX - Bagian 1
Pendahuluan
Untuk penjelasan awal mengenai HTTP Response status code, bisa lihat di sini dan di sini
Masing-masingnya mengisyaratkan Status Code response dari request yang diminta waktu melakukan pemanggilan HTTP.
Sekarang kita coba untuk melihat kasus untuk kasus Status Code 5xx, yang secara umum berarti ada kesalahan di sisi HTTP Server
HTTP Response Code 5xx ?
Dalam memahami kasus ini kita mengacu ke RFC (Request For Comment) , sebagai standar dokumentasi untuk teknologi internet.
Untuk kasus HTTP Response Code 4xx ini, maka patokan kita adalah :
- RFC-9110, berlaku untuk status code 500 s/d 505
- RFC-2295, berlaku untuk status code 506
- RFC-4918, berlaku untuk status code 507
- RFC-5842, berlaku untuk status code 508
- RFC-6585, berlaku untuk status code 511
Kita perlu patokan RFC ini untuk dapat memahami dasar awal untuk menentukan kasus yang tepat dalam menentukan status code yang tepat.
Daftarnya juga bisa dilihat di IANA HTTP Status Code Registry
Secara umum Status Code 5xx ini mengisyaratkan bahwa :
Http requestnya diterima di server, akan tetapi HTTP Server tidak mampu melakukan proses secara sempurna.
Oleh karenanya HTTP Server harus mengirimkan kembalian dalam bentuk representasi yang menginformasikan hal yang kurang/salah tersebut.
Coba kita lihat daftar HTTP Status Code nya satu persatu :
HTTP Status Code - 500 - Internal Server Error
Response Status Code 500 ini artinya Server mengalami error atau kondisi yang tidak diinginkan.
Misalnya :
- Ketika HTTP Server mencoba untuk mengakses resource di sebuah server, ternyata ada masalah di jaringan ke share folder, atau databasenya yang corrupt, dan kondisi runtime lainnya yang membuat HTTP Server mengalami kondisi yang tidak diinginkan.
HTTP Status Code - 501 - Not Implemented
Response Status Code 501 ini artinya bahwa Server tidak menemukan fungsi di server dengan HTTP Method tersebut untuk resource yang diminta.
Misalnya :
- Ketika kita memanggil sebuah REST API dengan HTTP Method GET , http://www.huzefril.com/data , untuk mendapatkan data Mahasiswa. Akan tetapi sebenarnya di servernya sendiri belum mengimplementasikan fungsinya. Baik karena belum ada logicnya, atau memang belum dibuka untuk umum.
Jadi boleh dibilang :
HTTP Status Code 501 ini adalah sebagai penanda bahwa Software Engineer belum mengimplementasikan code atau belum membuka API tersebut.
Status code 501 ini mirip dengan status code 405 (Method Not Allowed).
Akan tetapi kalau 405 (Method Not Allowed) ini adalah kesalahan dari HTTP Client yang mestinya tidak memanggil HTTP Method yang tersebut.
Sementara kalau 501 (Not Implemented) ini adalah memang dari sisi server yang belum mengimplementasikan HTTP Method yang diminta.
HTTP Status Code - 502 - Bad Gateway
Response Status Code 502 ini artinya bahwa Server berlaku sebagai proxy atau gateway, tidak mendapatkan response dari server internal ketika mencoba meneruskan request HTTP dari HTTP Client.
Misalnya :
- Ketika server kita berada di belakang Reverse Proxy sepertin NGINX, dan kita mengakses server kita untuk mendapatkan resource web. Pada saat itu server kita sedang downtime, maka server NGINX akan mengembalikan status 502 - Bad Gateway untuk menginformasikan bahwa NGINX tidak mendapatkan response dari server kita.
HTTP Status Code - 503 - Service Unavailable
Response Status Code 503 ini artinya HTTP Server tidak dapat memproses request karena servicenya tidak tersedia.
Sebuah service HTTP tidak tersedia, bisa jadi karena :
- Service nya mati.
- Request di server sudah terlalu banyak, sehingga tidak ada port atau thread yang bisa menghandle request HTTP.
- Ada pembatasan jumlah koneksi, sehingga server menolak koneksi baru.
HTTP Status 504 (Service Unavailable) ini bisa saja terjadi untuk kasus kalau Server mengimplementasikan HTTP Reactive Server, dengan pembatasan koneksi.
HTTP Status Code - 504 - Gateway Timeout
Response Status Code 504 ini artinya Server berlaku sebagai proxy atau gateway, tidak mendapatkan response dari server internal dalam jangka waktu tertentu ketika mencoba meneruskan request HTTP dari HTTP Client.
HTTP Status Code - 505 - HTTP Version Not Supported
Response Status Code 505 ini artinya Server menolak untuk memproses HTTP Request karena versi HTTP yang dikirimkan oleh HTTP Request berbeda versi mayor nya dibandingkan yang bisa diproses oleh Server.
Misalnya :
- Ketika server kita seperti Apache, NGINX sudah tidak diupgrade, sehingga tidak mengenali HTTP Request dengan HTTP version dari browser-browser baru.
- Ketika browser yang kita pakai adalah browser sudah lama sekali, mengakses server HTTP sekarang, maka bisa jadi akan ketemu hal diatas.
HTTP Status Code - 506 - Variant Also Negotiates
Response Status Code 506 ini artinya Server mempunyai masalah di konfigurasi internal terkait dengan content-negotiation sehingga content-negotiationnya bisa menjadi konfigurasi secara circular .
HTTP Status Code 505 ini merupakan Status Code yang baru, dan terkait dengan fitur Transparent Content Negotiation.