Jeśli korzystasz z internetu, codziennie używasz protokołu HTTP, nawet o tym nie myśląc. Gdy otwierasz stronę internetową, wysyłasz żądanie HTTP GET. Gdy wypełniasz formularz, prawdopodobnie wysyłasz POST. Zrozumienie tych podstaw to fundament programowania webowego.
Dlaczego HTTP jest ważny
HTTP (HyperText Transfer Protocol) to język komunikacji internetu. W 2016 roku praktycznie wszystkie aplikacje webowe i mobilne komunikują się przez HTTP. Dla programisty to podstawa – bez zrozumienia HTTP trudno tworzyć nowoczesne aplikacje.
Co się nauczysz:
- Czym jest protokół HTTP i jak działa
- Jakie są główne metody HTTP i do czego służą
- Kiedy używać GET, POST, PUT, DELETE
- Jakie są najważniejsze kody odpowiedzi HTTP
- Jak wygląda żądanie HTTP w praktyce
Wymagania wstępne:
- Podstawowe pojęcie o internecie i stronach WWW
- Rozumienie pojęć: klient, serwer, żądanie, odpowiedź
- Nie musisz umieć programować!
Czym jest protokół HTTP
HTTP to protokół komunikacji między przeglądarką (klientem) a serwerem. Składa się z żądań (requests) wysyłanych przez klienta i odpowiedzi (responses) zwracanych przez serwer.
Struktura żądania HTTP
Każde żądanie HTTP składa się z kilku części:
GET /users/123 HTTP/1.1 Host: api.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: application/json
- Metoda HTTP – co chcemy zrobić (GET, POST, PUT, DELETE)
- Ścieżka – gdzie chcemy się dostać (/users/123)
- Wersja protokołu – HTTP/1.1 lub HTTP/2
- Nagłówki – dodatkowe informacje (Host, User-Agent, etc.)
Metoda GET – pobieranie danych
GET to najczęściej używana metoda HTTP. Służy do pobierania danych z serwera:
GET /products HTTP/1.1 Host: sklep.example.com
- Nie zmienia danych na serwerze
- Można powtarzać bez skutków ubocznych
- Parametry w URL: /products?category=electronics&limit=10
- Może być cache’owany przez przeglądarki
Przykłady użycia GET:
- Otwieranie strony internetowej
- Pobieranie listy produktów
- Wyszukiwanie w Google
- Pobieranie szczegółów użytkownika
Metoda POST – wysyłanie nowych danych
POST służy do wysyłania danych na serwer, zwykle do tworzenia nowych zasobów:
POST /users HTTP/1.1 Host: api.example.com Content-Type: application/json { "name": "Jan Kowalski", "email": "jan@example.com" }
- Wysyła dane w ciele żądania (nie w URL)
- Zmienia stan serwera (tworzy nowe dane)
- Nie jest idempotentny (wielokrotne wywołanie = wiele rekordów)
- Nie jest cache’owany
Przykłady użycia POST:
- Rejestracja nowego użytkownika
- Wysyłanie formularza kontaktowego
- Dodawanie komentarza
- Upload pliku
Metoda PUT – aktualizacja danych
PUT służy do aktualizacji istniejących danych lub tworzenia zasobu o znanym ID:
PUT /users/123 HTTP/1.1 Host: api.example.com Content-Type: application/json { "name": "Jan Nowak", "email": "jan.nowak@example.com" }
- Zastępuje cały zasób (pełna aktualizacja)
- Jest idempotentny (wielokrotne wywołanie = ten sam efekt)
- Może tworzyć zasób jeśli nie istnieje
- Wymaga podania wszystkich pól zasobu
Przykłady użycia PUT:
- Edycja profilu użytkownika
- Aktualizacja artykułu
- Zmiana ustawień aplikacji
- Zastąpienie całego dokumentu
Metoda DELETE – usuwanie danych
DELETE służy do usuwania zasobów z serwera:
DELETE /users/123 HTTP/1.1 Host: api.example.com
- Usuwa określony zasób
- Jest idempotentny (wielokrotne usunięcie = ten sam efekt)
- Zwykle nie ma ciała żądania
- Po usunięciu zasób przestaje istnieć
Przykłady użycia DELETE:
- Usunięcie konta użytkownika
- Skasowanie komentarza
- Usunięcie pliku z serwera
- Anulowanie zamówienia
Kody odpowiedzi HTTP
Serwer odpowiada kodem statusu informującym o wyniku operacji:
Kod | Znaczenie | Przykład |
---|---|---|
200 OK | Sukces | Dane pobrane pomyślnie |
201 Created | Zasób utworzony | Nowy użytkownik dodany |
400 Bad Request | Błędne żądanie | Niepoprawny format JSON |
401 Unauthorized | Brak autoryzacji | Wymagane logowanie |
404 Not Found | Nie znaleziono | Użytkownik nie istnieje |
500 Internal Server Error | Błąd serwera | Awaria aplikacji |
REST API – HTTP w praktyce
HTTP metody są podstawą architektur RESTful:
GET /users # Lista użytkowników GET /users/123 # Szczegóły użytkownika 123 POST /users # Utwórz nowego użytkownika PUT /users/123 # Zaktualizuj użytkownika 123 DELETE /users/123 # Usuń użytkownika 123
Praktyczne różnice
✅ Dobre praktyki:
- GET – tylko do pobierania, nigdy do zmiany danych
- POST – do tworzenia nowych zasobów
- PUT – do pełnej aktualizacji istniejących zasobów
- DELETE – do usuwania zasobów
Technicznie tak, ale to zła praktyka. PUT i DELETE czytelniej wyrażają intencję. Nowoczesne API używają wszystkich metod HTTP zgodnie z przeznaczeniem.
POST tworzy nowe zasoby (serwer nadaje ID), PUT aktualizuje istniejące (klient zna ID). PUT jest idempotentny, POST nie.
Przeglądarki w formularzach HTML obsługują tylko GET i POST. PUT i DELETE używa się w JavaScript (AJAX) lub w aplikacjach mobilnych.
Idempotentna metoda daje ten sam rezultat niezależnie od ilości wywołań. GET, PUT, DELETE są idempotentne. POST nie jest.
Tak! PATCH (częściowa aktualizacja), HEAD (tylko nagłówki), OPTIONS (sprawdzanie możliwości) i inne. Ale GET, POST, PUT, DELETE to podstawa.
Przydatne zasoby:
🚀 Zadanie dla Ciebie
Zaprojektuj HTTP API dla prostego bloga:
- Jak pobrać wszystkie artykuły?
- Jak pobrać konkretny artykuł?
- Jak dodać nowy artykuł?
- Jak zaktualizować istniejący artykuł?
- Jak usunąć artykuł?
Dla każdej operacji określ: metodę HTTP, URL, kod odpowiedzi sukcesu.
Masz pytania o protokół HTTP? Podziel się swoimi doświadczeniami w komentarzach – HTTP to podstawa całego internetu, warto to dobrze zrozumieć!