W jednym z artykułów pisałem, że odpowiedzi HTTP składają się między innymi ze statusu odpowiedzi. |Zostały tam przedstawione niektóre z typowych statusów odpowiedzi HTTP. Teraz poświęcimy im trochę więcej czasu.
Po co są kody odpowiedzi?
Aby w łatwy sposób można było wiedzieć czy zapytanie wysłane na serwer się powiodło czy nie. A jeżeli nie to dlaczego.
Istnieje kilka głównych kategorii odpowiedzi aby można było bez wnikania w cały kod wiedzieć czy ewentualny błąd był np. po stronie aplikacji, użytkownika. Poniżej zostaną przedstawione poszczególne grupy wraz z wyszczególnieniem najważniejszych kodów.
Kody Informacyjne – HTTP 1xx
Kody które oznaczają, że żądanie zostało odebrane ale nadal jest przetwarzane.
Kod | Opis słowny | znaczenie / zwracany zasób |
100 | Continue | Kontynuuj – wyślij jeszcze raz te zapytanie. |
110 | Connection Timed Out | Przekroczono czas połączenia. |
111 | Connection refused | Serwer odrzucił połączenie |
Kody Sukcesu – HTTP 2xx
Kody oznaczają sukces danego zapytania.
Kod | Opis słowny | znaczenie / zwracany zasób |
200 | OK | żądany zasób, np. przy żądaniu GET |
201 | Created | potwierdzenie zapisania danych na serwerze, np. stworzenie nowego użytkownika |
202 | Accepted | przyjęto do realizacji, ale jeszcze nie skończono go przetwarzać |
204 | No content | serwer wykonał zapytanie i nie ma potrzeby zwracać żadnej treści |
Kody Przekierowania – HTTP 3xx
Kody oznaczają, że zapytanie zostało przekierowanie na inny adres.
Podobieństwa i różnice:
- Kody 301 oraz 302 HTTP są używane do stałych i tymczasowych zmian adresów, natomiast kod 303 jest przeznaczony do żądań typu POST.
- Kod 302 i 307 oba są wykorzystywane do tymczasowych przekierowań. 307 zachowuje oryginalną metodę HTTP za to 302 może być zmienione na GET.
- Kod 301 i 308 oba są wykorzystywane do tymczasowych przekierowań. 308 zachowuje oryginalną metodę HTTP za to 301 może być zmienione na GET.
Kod | Opis słowny | znaczenie / zwracany zasób |
301 | Moved permanently | trwale przeniesiony – żądany zasób zmienił swój URI i tam powinniśmy go szukać. Może być zamieniona na GET. |
302 | Found | znaleziono – żądany zasób jest tymczasowo dostępny pod innym adresem. Może być zamieniona na GET. |
303 | See other | zobacz inne – odpowiedź na żądanie znajduje się pod innym URI. Dedykowane dla zapytań typu POST. |
307 | Temporary redirected | tymczasowe przekierowanie – żądany zasób tymczasowo znajduje się pod innym adresem. Zachowuje oryginalną metodę HTTP. |
308 | Permanent Redirected | trwałe przekierowanie – żadany zasób zmienił swóje URI i tam powinniśmy go szukać. Zachowuje oryginalną metodę HTTP. |
Kody błędów po stronie klienta – HTTP 4xx
W przypadku błędnego żądania otrzymujemy w odpowiedzi status 4xx.
Kod | Opis słowny | znaczenie / zwracany zasób |
400 | Bad Request | złe zapytanie – błędne żądanie, błąd użytkownika w zapytaniu np. złe body – |
401 | Unauthorized | nieautoryzowany dostęp – żądanie wymaga autoryzacji |
403 | Forbidden | zabroniony – użytkownik nie posiada uprawnień do zasobu |
404 | Not Found | nie odnaleziono zasobu |
409 | Conflict | konflikt – występuje konflikt z istniejącym zasobem |
414 | Request URI Too Long | adres URI za długi – np. przy przekazywaniu dużej ilości parametrów w URI dla metody GET |
Kody błędów po stronie serwera – HTTP 5xx
Kody odpowiedzi w przypadku błędów po stronie serwera np. nieobsłużenie jakiegoś wyjątku przez programistę lub nieprzetworzenie błędnej odpowiedzi z usługi zewnętrznej.
Kod | Opis słowny | znaczenie / zwracany zasób |
500 | Internal Server Error | wewnętrzny błąd serwera – błędne żądanie, błąd użytkownika w zapytaniu np. złe body – |
501 | Not Implemented | niezaimplementowane – serwer nie obsługuje metody żądania lub funkcji |
503 | Service Unavailable | usługa niedostępna – serwer tymczasowo wyłączony z dostępu lub przeciążony |
Podsumowanie
W tym artykule szerzej przyjrzeliśmy się kodom odpowiedzi HTTP oraz poznaliśmy podstawowe różnice pomiędzy ich grupami.
Bibliografia
- Kody HTTP -> https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes
- Kody HTTP -> https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308
- Kody HTTP -> https://pl.wikipedia.org/wiki/Kod_odpowiedzi_HTTP
- Kody przekierowań 3xx -> https://semurai.pl/akademia/przekierowania-301-302-307-308/#przekierowanie-301-302-a-307-i-308-podobienstwa-i-roznice