Przejdź do treści
REST API od podstawModuł 1 · lekcja 1 z 3
Za darmo4 min czytania

Moduł 1 · Fundamenty: HTTP, REST i JSON

Czym jest API i REST: zasoby, adresy i reprezentacje

Po tej lekcji wyjaśnisz, czym jest API i co znaczy, że API jest zgodne ze stylem REST. Rozpoznasz zasób, jego adres i reprezentację, a w ćwiczeniu zaprojektujesz pierwsze adresy dla sklepu internetowego.

API: umowa między dwoma programami

API (Application Programming Interface, interfejs programistyczny aplikacji) to opis tego, jak jeden program może poprosić drugi o dane albo o wykonanie działania. Umowa mówi, pod jaki adres wysłać prośbę, w jakim formacie przekazać dane i czego spodziewać się w odpowiedzi. Program, który prosi, nazywamy klientem, a program, który odpowiada, serwerem.

Przykład z kursu: sklep rowerowy Szprycha z Krakowa sprzedaje części i akcesoria. Ma stronę internetową, aplikację na telefon i kasę w punkcie stacjonarnym. Zamiast trzech osobnych baz produktów wszystkie trzy programy pytają jedno API o to samo: listę produktów, ceny i stan magazynu. Gdy sprzedawca zmieni cenę kasku, nową cenę od razu widać w każdym z tych miejsc.

API spotkasz też poza własną firmą. Narodowy Bank Polski udostępnia kursy walut przez publiczne API, a Ministerstwo Finansów przez API wykazu podatników VAT pozwala sprawdzić status kontrahenta po numerze NIP. Z obu skorzystasz w module 3.

Najczęściej API działa przez protokół HTTP, ten sam, którego używa przeglądarka. Dlatego do pierwszych prób wystarczy terminal i program curl, który wysyła żądania HTTP z wiersza poleceń.

REST: styl, a nie protokół

REST (Representational State Transfer) opisał Roy Fielding w rozprawie doktorskiej z 2000 roku. To styl architektury, czyli zestaw ograniczeń. Nie jest to protokół, biblioteka ani format danych. API, które przestrzega tych ograniczeń, nazywa się potocznie REST API albo RESTful API.

Ograniczenia stylu REST według Fieldinga

Na podstawie: R. Fielding, rozprawa doktorska, rozdział 5 (2000).

Dwa ograniczenia warto zrozumieć od razu. Bezstanowość oznacza, że serwer nie pamięta poprzedniej rozmowy z klientem. Jeśli aplikacja kasowa chce pobrać drugą stronę listy produktów, musi w żądaniu podać, o którą stronę chodzi, i dołączyć dane logowania. Dzięki temu dowolny z kilku serwerów może obsłużyć dowolne żądanie, co ułatwia rozbudowę. Jednolity interfejs oznacza, że każde API w tym stylu działa podobnie: masz zasoby z adresami i standardowe metody HTTP, więc ucząc się jednego API, uczysz się trochę każdego.

Zasób, adres i reprezentacja

Zasób to wszystko, co ma sens nazwać i udostępnić: produkt, zamówienie, klient, raport. Każdy zasób ma adres URI. W sklepie Szprycha wygląda to tak:

Tekst
https://api.szprycha.example/produkty kolekcja produktów https://api.szprycha.example/produkty/5 jeden produkt o id 5 https://api.szprycha.example/zamowienia/42 jedno zamówienie

Zwróć uwagę, że adresy to rzeczowniki. Nie piszemy /pobierzProdukty ani /usunProdukt?id=5. Co ma się stać, mówi metoda HTTP: GET /produkty/5 pobiera produkt, a DELETE /produkty/5 go usuwa. Metodami zajmiesz się dokładnie w module 2.

Klient nigdy nie dostaje samego zasobu, tylko jego reprezentację, czyli zapis stanu w wybranym formacie. Ten sam kask może mieć reprezentację w JSON dla aplikacji i w HTML dla przeglądarki. Format opisuje nagłówek Content-Type, na przykład application/json. W kursie pracujesz głównie z JSON, bo w tym formacie odpowiadają też oba publiczne API z modułu 3: NBP i wykazu podatników VAT.

JSON
{ "id": 5, "nazwa": "Kask miejski M", "kategoria": "akcesoria", "cenaGr": 18900, "stan": 8 }

Cena jest zapisana w groszach jako liczba całkowita (18900 gr to 189,00 zł). To świadoma decyzja: liczby zmiennoprzecinkowe w wielu językach dają błędy zaokrągleń, a liczby całkowite groszy dodają się dokładnie.

REST, SOAP, GraphQL: gdzie jest miejsce REST

REST nie jest jedynym sposobem budowania API. SOAP to starszy standard oparty na XML i ścisłych kontraktach WSDL, wciąż spotykany w starszych systemach integracyjnych. GraphQL pozwala klientowi w jednym zapytaniu wskazać dokładnie te pola, których potrzebuje. W tym kursie uczysz się REST, bo opiera się bezpośrednio na HTTP i jego znajomość przydaje się także przy pozostałych podejściach.

Trzy popularne podejścia do budowy API

Uproszczone porównanie, stan na październik 2026.

Najważniejsze w 3 punktach

  1. API to umowa, jak programy wymieniają dane; REST to styl architektury z sześcioma ograniczeniami Fieldinga, a nie protokół.
  2. W REST każdy zasób ma adres będący rzeczownikiem, a działanie wyraża metoda HTTP.
  3. Klient dostaje reprezentację zasobu, której format opisuje nagłówek Content-Type, najczęściej JSON.

Źródła

Materiały do pobrania

Pliki do ćwiczeń są dostępne w abonamencie.

  • Serwer ćwiczebny sklepu, produkty w JSON i ćwiczenia z curlModuł 1: serwer_cwiczebny.py (Python, bez instalacji pakietów), produkty.json, bledny.json i poprawny.json, kontrola.py z wynikami kontrolnymi, rozwiązania ćwiczeń 1.1 i 1.25 KBDostępne w abonamencie
  • Metody HTTP, kody statusu i klient w requestsModuł 2: serwer ćwiczebny, klient_szprycha.py, kody-statusu.csv, rozwiązania ćwiczeń 2.1–2.3 z poleceniami curl6 KBDostępne w abonamencie
  • API NBP i wykazu podatników VAT: klienci i zapisane odpowiedziModuł 3: cennik_eur.py, klient_nbp.py (timeout, Retry, pamięć podręczna), biala_lista.py, odpowiedzi API z 15.10.2026, kontrola.py, rozwiązania 3.1 i 3.210 KBDostępne w abonamencie
  • Specyfikacja OpenAPI 3.1 i walidacja schematówModuł 4: openapi.yaml, sprawdz_schemat.py, rozwiązania 4.1 (projekt serwisu), 4.2 (zmiany zgodne i łamiące), 4.3 (specyfikacja z PATCH)5 KBDostępne w abonamencie
  • API produktów w FastAPI z bazą SQLite i testamiModuł 5: szprycha_api (main.py, baza.py, 6 testów pytest), rozwiązania 5.1–5.39 KBDostępne w abonamencie
  • Klucze API, limit zapytań, ETag i przegląd bezpieczeństwaModuł 6: szprycha_api z kluczami i rolami (7 testów), do_przegladu.py, lista-kontrolna.md, rozwiązania 6.2 i 6.39 KBDostępne w abonamencie
  • Projekt końcowy: API zamówień (szablon, rozwiązanie, 12 testów)Moduł 7: start/ (szablon, 3 z 12 testów), rozwiazanie/ (12 z 12), wyscig.py, README z wynikami kontrolnymi i kluczem oceny17 KBDostępne w abonamencie

Następna: Anatomia żądania i odpowiedzi HTTP: pierwsze kroki z curl

20 lekcji, pliki i certyfikat w abonamencie.

Program kursu

Karta wymagana · anulujesz jednym kliknięciem · Mam już konto