HTTP protokół – GET, POST, PUT, DELETE

TL;DR: HTTP to protokół komunikacji w internecie. GET pobiera dane, POST wysyła nowe dane, PUT aktualizuje istniejące, DELETE usuwa. Każda metoda ma swoje przeznaczenie – używaj GET do czytania, POST do tworzenia, PUT do edycji, DELETE do usuwania.

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.

HTTP to fundament całego internetu. Każda strona WWW, każde API, każda aplikacja mobilna używa HTTP do komunikacji. To nie jest opcjonalna wiedza – to podstawa zawodu programisty.

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

Analogia: HTTP to jak rozmowa w restauracji. Klient (Ty) mówi kelnerowi (serwerowi) co chce zamówić (żądanie HTTP). Kelner przynosi jedzenie lub mówi że nie ma (odpowiedź HTTP). Każda metoda HTTP to inny typ zamówienia.

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.

Protokół – zestaw zasad komunikacji między komputerami. Tak jak ludzie mają język polski, komputery mają protokoły jak HTTP, FTP, SMTP.

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
Charakterystyka GET:

  • 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"
}
Charakterystyka POST:

  • 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"
}
Charakterystyka PUT:

  • 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
Charakterystyka DELETE:

  • 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:

KodZnaczeniePrzykład
200 OKSukcesDane pobrane pomyślnie
201 CreatedZasób utworzonyNowy użytkownik dodany
400 Bad RequestBłędne żądanieNiepoprawny format JSON
401 UnauthorizedBrak autoryzacjiWymagane logowanie
404 Not FoundNie znalezionoUżytkownik nie istnieje
500 Internal Server ErrorBłąd serweraAwaria aplikacji
Pamiętaj: Kody 2xx = sukces, 4xx = błąd klienta, 5xx = błąd serwera

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
Błąd #1: Używanie GET do operacji które zmieniają dane (np. GET /delete-user/123) – to narusza zasady HTTP!
Błąd #2: Wysyłanie wrażliwych danych w URL przez GET – parametry GET są widoczne w logach serwera.
Błąd #3: Używanie POST do wszystkiego – każda metoda ma swoje przeznaczenie.
Czy mogę używać tylko GET i POST?

Technicznie tak, ale to zła praktyka. PUT i DELETE czytelniej wyrażają intencję. Nowoczesne API używają wszystkich metod HTTP zgodnie z przeznaczeniem.

Jaka jest różnica między PUT a POST?

POST tworzy nowe zasoby (serwer nadaje ID), PUT aktualizuje istniejące (klient zna ID). PUT jest idempotentny, POST nie.

Czy przeglądarki obsługują wszystkie metody?

Przeglądarki w formularzach HTML obsługują tylko GET i POST. PUT i DELETE używa się w JavaScript (AJAX) lub w aplikacjach mobilnych.

Co to znaczy że metoda jest idempotentna?

Idempotentna metoda daje ten sam rezultat niezależnie od ilości wywołań. GET, PUT, DELETE są idempotentne. POST nie jest.

Czy są inne metody HTTP?

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ć!

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry