Podstawy HTTP — jak rozmawiać z serwerem?
Ten rozdział to absolutne podstawy. Jeśli słyszysz hasła "wyślij POST-a", "co masz w body?" albo "dostałem 404" i nie wiesz o co chodzi — jesteś w dobrym miejscu.
Czym jest HTTP? (Szybka analogia)
Wyobraź sobie, że Internet to restauracja.
- Ty (Klient/Przeglądarka): Siedzisz przy stoliku i chcesz coś zjeść.
- Kelner (Serwer): Przyjmuje Twoje zamówienia i przynosi jedzenie.
- Request (Zapytanie): To moment, w którym mówisz kelnerowi, czego chcesz.
- Response (Odpowiedź): To moment, w którym kelner wraca (z jedzeniem lub informacją, że kuchnia spalona).
Każde takie "zagadanie do kelnera" ma swoją strukturę. Musisz wiedzieć co powiedzieć i jak.
Budowa zapytania (Anatomia Requestu)
Każde zapytanie do serwera składa się z kilku części. Najważniejsze, żebyś zrozumiał różnicę między Nagłówkami (Headers) a Body (Ciałem/Treścią).
1. Metoda i Adres (Co robimy?)
To pierwsza linijka. Mówisz: "Chcę ZOBACZYĆ (GET) menu" albo "Chcę DODAĆ (POST) zamówienie".
2. Nagłówki (Headers) — "Koperta"
To informacje o przesyłce, a nie sama przesyłka.
* W jakim języku mówisz? (np. Accept-Language: pl)
* Jakiego typu dane przesyłasz? (np. Content-Type: application/json)
* Czy masz klucz do VIP roomu? (np. Authorization: Bearer sekretny-token)
3. Body (Ciało/Treść) — "Zawartość paczki"
Co to jest to całe Body?
Body to główne dane, które wysyłasz do serwera.
Wyobraź sobie, że wysyłasz paczkę kurierem: * Adres i etykieta to URL i Nagłówki. * To, co jest w środku pudełka (np. buty, książka) to właśnie Body.
Ważne: Nie każde zapytanie ma Body! * Jak pytasz o godzinę (GET), nie dajesz nikomu paczki. Body jest puste. * Jak wysyłasz formularz zgłoszeniowy (POST), wypełniony formularz jest Twoim Body.
Metody HTTP (Czasowniki)
Serwer musi wiedzieć, co chcesz zrobić z danym adresem (zasobem).
GET — Daj mi to
- Do czego służy: Pobieranie danych.
- Czy ma Body?: NIE. (Technicznie można, ale się tego nie robi).
- Przykład: Wejście na stronę internetową, pobranie listy użytkowników.
- Analogia: "Kelner, poproszę kartę dań."
POST — Masz, weź to przetwórz
- Do czego służy: Wysyłanie nowych danych (tworzenie konta, logowanie, wysyłanie komentarza).
- Czy ma Body?: TAK. W Body wysyłasz dane (np. login i hasło).
- Analogia: "Kelner, tu jest moje zamówienie zapisane na kartce. Zanieś do kuchni."
PUT / PATCH — Zmień to
- Do czego służy: Edycja danych.
- PUT: Podmieniasz wszystko (stara wersja do kosza, wstawiasz nową).
- PATCH: Zmieniasz tylko kawałek (np. tylko zmianę hasła, a nie całego profilu).
- Czy ma Body?: TAK. W Body wysyłasz nowe dane.
DELETE — Usuń to
- Do czego służy: Kasowanie danych.
- Czy ma Body?: Zazwyczaj NIE (wystarczy wskazać palcem co usunąć), choć czasem się zdarza.
Formaty danych w Body (Jak zapakować paczkę?)
Skoro wiemy, że POST wysyła dane w Body, to jak one wyglądają? Komputery muszą się umówić na format.
JSON (application/json)
Najpopularniejszy format w nowoczesnych aplikacjach. Wygląda jak obiekt w JavaScript. Czytelny dla człowieka i maszyny.
{
"imie": "Jan",
"nazwisko": "Kowalski",
"wiek": 30,
"czyLubiePizze": true
}
Formularz (x-www-form-urlencoded)
Stary styl, tak działają proste formularze HTML. Wygląda trochę jak link:
imie=Jan&nazwisko=Kowalski&wiek=30
Multipart (multipart/form-data)
Używany, gdy wysyłasz pliki (zdjęcia, dokumenty). Pozwala podzielić Body na kawałki, gdzie jeden kawałek to tekst, a drugi to obrazek.
Kody odpowiedzi (Co mówi serwer?)
Gdy kelner wraca, daje znać czy się udało. W HTTP robi to za pomocą numerków.
2xx — Jest dobrze (Sukces)
- 200 OK: Wszystko gra, oto Twoje dane.
- 201 Created: Udało się, utworzyliśmy coś nowego (np. po rejestracji).
- 204 No Content: Udało się, ale nie mam nic do wyświetlenia (np. po przycisku "Zapisz").
4xx — Twoja wina (Błąd Klienta)
- 400 Bad Request: Wysłałeś głupoty (np. brak wymaganego pola w Body).
- 401 Unauthorized: Nie znam Cię, zaloguj się.
- 403 Forbidden: Znam Cię, ale nie wolno Ci tu wchodzić.
- 404 Not Found: Nie ma takiego adresu (błędny link).
5xx — Wina serwera (Awaria)
- 500 Internal Server Error: Coś wybuchło w kuchni (błąd w kodzie serwera).
- 503 Service Unavailable: Serwer jest przeciążony lub wyłączony.
Ściąga w pigułce
| Chcę... | Metoda | Body? | Przykład |
|---|---|---|---|
| Pobrać dane | GET | Nie | GET /users |
| Utworzyć coś | POST | Tak | POST /users (dane w JSON) |
| Zmienić coś | PATCH | Tak | PATCH /users/1 (co zmienić) |
| Usunąć coś | DELETE | Nie | DELETE /users/1 |