Skip to content

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.

  1. Ty (Klient/Przeglądarka): Siedzisz przy stoliku i chcesz coś zjeść.
  2. Kelner (Serwer): Przyjmuje Twoje zamówienia i przynosi jedzenie.
  3. Request (Zapytanie): To moment, w którym mówisz kelnerowi, czego chcesz.
  4. 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