200 OK
Standardowa odpowiedz sukcesu. Zadanie zostało przetworzone poprawnie.
Kody statusu HTTP (HTTP Status Codes) sa trzycyfrowymi numerami zwracanymi przez serwer w odpowiedzi na zadanie klienta. Stanowia fundamentalny element komunikacji w protokole HTTP, informujac klienta o wyniku przetwarzania zadania. Prawidłowe rozumienie i stosowanie kodow statusu jest kluczowe dla budowania niezawodnych aplikacji webowych, poprawy SEO oraz zapewnienia dobrego doswiadczenia użytkownika.
Kody HTTP sa podzielone na 5 klas, gdzie pierwsza cyfra okresla kategorie odpowiedzi:
| Klasa | Zakres | Znaczenie | Przykład |
|---|---|---|---|
| 1xx | 100-199 | Informacyjne | 100 Continue |
| 2xx | 200-299 | Sukces | 200 OK |
| 3xx | 300-399 | Przekierowanie | 301 Moved Permanently |
| 4xx | 400-499 | Błąd klienta | 404 Not Found |
| 5xx | 500-599 | Błąd serwera | 500 Internal Server Error |
HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 1234Cache-Control: max-age=3600
{"data": "..."}Pierwsza linia (status line) zawiera wersje protokołu, kod statusu i komunikat.
Te kody sa rzadko używane bezposrednio przez programistow:
200 OK
Standardowa odpowiedz sukcesu. Zadanie zostało przetworzone poprawnie.
201 Created
Zasob został pomyslnie utworzony. Czesto zawiera nagłówek Location z URI nowego zasobu.
204 No Content
Sukces, ale brak ciała odpowiedzi. Typowe dla DELETE lub PUT.
206 Partial Content
Czesciowa odpowiedz (np. przy pobieraniu fragmentu pliku).
301 Moved Permanently
Zasob został trwale przeniesiony pod nowy adres. Przegladarki i wyszukiwarki aktualizuja swoje rekordy. Kluczowy dla SEO.
302 Found (Previously “Moved Temporarily”)
Tymczasowe przekierowanie. Oryginalny URI powinien być używany w przyszłości.
304 Not Modified
Zasob nie zmienił się od ostatniego zadania. Pozwala na efektywne cachowanie.
307 Temporary Redirect
Jak 302, ale gwarantuje zachowanie metody HTTP (np. POST pozostaje POST).
308 Permanent Redirect
Jak 301, ale gwarantuje zachowanie metody HTTP.
| Kod | Nazwa | Opis |
|---|---|---|
| 400 | Bad Request | Niepoprawna składnia zadania |
| 401 | Unauthorized | Brak uwierzytelnienia (wymagane logowanie) |
| 403 | Forbidden | Brak autoryzacji (zalogowany, ale bez uprawnien) |
| 404 | Not Found | Zasob nie istnieje |
| 405 | Method Not Allowed | Metoda HTTP niedozwolona dla zasobu |
| 409 | Conflict | Konflikt z aktualnym stanem zasobu |
| 422 | Unprocessable Entity | Poprawna składnia, ale błędy semantyczne |
| 429 | Too Many Requests | Przekroczono limit zapytan (rate limiting) |
| Kod | Nazwa | Opis |
|---|---|---|
| 500 | Internal Server Error | Ogolny błąd serwera |
| 501 | Not Implemented | Funkcjonalnosc nieobsługiwana |
| 502 | Bad Gateway | Błąd proxy/bramy |
| 503 | Service Unavailable | Serwer przeciazony lub w trybie konserwacji |
| 504 | Gateway Timeout | Timeout przy komunikacji z upstream serwerem |
<?php// Zwrocenie 404 Not Foundhttp_response_code(404);echo json_encode(['error' => 'Użytkownik nie znaleziony']);
// Przekierowanie 301header('Location: https://example.com/nowy-adres', true, 301);exit;
// Utworzenie zasobu - 201 Createdhttp_response_code(201);header('Location: /api/users/123');echo json_encode(['id' => 123, 'name' => 'Jan Kowalski']);
// Błąd walidacji - 422 Unprocessable Entityhttp_response_code(422);echo json_encode([ 'errors' => [ 'email' => 'Niepoprawny format adresu email', 'password' => 'Hasło musi mieć minimum 8 znakow' ]]);async function fetchUser(id) { const response = await fetch(`/api/users/${id}`);
switch (response.status) { case 200: return await response.json(); case 401: window.location.href = '/login'; break; case 403: throw new Error('Brak uprawnien do tego zasobu'); case 404: throw new Error('Użytkownik nie znaleziony'); case 500: throw new Error('Błąd serwera. Sprobuj ponownie później.'); default: throw new Error(`Nieoczekiwany kod: ${response.status}`); }}fetch('/api/data') .then(response => { console.log('Status:', response.status); console.log('Status Text:', response.statusText); console.log('Content-Type:', response.headers.get('Content-Type')); console.log('Cache-Control:', response.headers.get('Cache-Control')); return response.json(); });Przyjazne strony błędów
Zamiast domyslnej strony 404, wyswietl uzyteczna informacje z linkami nawigacyjnymi i wyszukiwarka.
Informowanie o postepie
Przy długich operacjach można użyć 202 Accepted i polling lub WebSocket.
Kody statusu HTTP sa kluczowym elementem komunikacji webowej. Prawidłowe ich stosowanie:
Najważniejsze kody do zapamietania: