🔌 API a webové služby

🔌 API a webové služby

API (Application Programming Interface) není magie - je to způsob, jak spolu komunikují programy přes internet. Když si stáhnete počasí v aplikaci, použijete přihlášení přes Google, nebo když e-shop ověří platbu kartou = to vše funguje přes API. 90 % moderních aplikací používá API pro komunikaci. Zde je návod, jak API prakticky funguje a jak s ním začít pracovat.

Co je API a proč to potřebujete

API v praxi (konkrétní příklady)

  • Počasí: Aplikace pro počasí nemá vlastní meteorologickou stanici. Posílá požadavek na API (např. OpenWeatherMap) → dostane data (teplota, srážky) → zobrazí.
  • Přihlášení přes Google: Web pošle požadavek na Google API → Google ověří uživatele → vrátí token → web vás přihlásí.
  • Platba kartou: E-shop pošle platební údaje na API platební brány (Stripe, PayPal) → vrátí "platba úspěšná/neúspěšná".
  • Mapa: Web zobrazuje mapy z Google Maps API → bez API by musel nakreslit vlastní mapy (nereálné).

Jak to funguje technicky

Zjednodušeně: API = restaurace. Vy (klient) pošlete objednávku (HTTP požadavek) → číšník (API) donese objednávku do kuchyně (server) → kuchyň připraví jídlo (data) → číšník přinese jídlo zpět (HTTP odpověď).

Technicky:

  1. Klient (váš program, web, aplikace) pošle HTTP požadavek na URL adresu API.
  2. Server (vzdálený počítač) zpracuje požadavek → provede akci (načte data z databáze, provede výpočet).
  3. Server pošle HTTP odpověď zpět (data ve formátu JSON nebo XML).
  4. Klient zpracuje data → zobrazí uživateli.
Proč API: Místo programování vlastního počasí, map, plateb → použijete hotové API za pár korun/měsíčně (nebo zdarma). Ušetříte měsíce práce.

První kroky (1 hodina)

1 Nainstalujte nástroj pro testování (Postman)

Jděte na postman.com → stáhněte desktop app (zdarma) → nainstalujte. Proč: Postman = grafické rozhraní pro odesílání HTTP požadavků. Vidíte, co posíláte a co dostáváte zpět.

2 Vyzkoušejte první API požadavek

Otevřete Postman → New Request → Method: GET → URL: https://jsonplaceholder.typicode.com/posts/1 → klikněte Send. Dostanete JSON data (titulek a text příspěvku). Proč: JSONPlaceholder = testovací API zdarma. Učíte se bez rizika.

3 Pochopte strukturu odpovědi

Odpověď vidíte v JSON formátu: {"userId": 1, "id": 1, "title": "...", "body": "..."}. JSON = formát dat (páry klíč-hodnota). Proč: 95 % API vrací data v JSON. Musíte rozumět struktuře.

Realistická očekávání: První týden = zmatení (HTTP metody, stavové kódy, autentizace). Po 2-3 týdnech pravidelného cvičení = pochopíte základy. Po 2 měsících = dokážete integrovat 80 % běžných API (počasí, mapy, platby).
Tip: Začněte s veřejnými API bez autentizace (JSONPlaceholder, Dog API, Cat API). Po zvládnutí přejděte na API s API klíčem (OpenWeatherMap).

HTTP metody - co se děje při požadavku

Každý HTTP požadavek má metodu, která říká serveru, co má udělat.

GET (Načti data)

Co dělá: Načte data ze serveru. Nemění nic na serveru.
Příklad: Načíst seznam uživatelů, zobrazit článek, získat počasí.
Postman:

Method: GET
URL: https://jsonplaceholder.typicode.com/users

Odpověď: JSON seznam uživatelů.

POST (Vytvoř nová data)

Co dělá: Pošle data na server → server je uloží (např. do databáze).
Příklad: Vytvořit nový příspěvek, zaregistrovat uživatele, odeslat formulář.
Postman:

Method: POST
URL: https://jsonplaceholder.typicode.com/posts
Body (JSON):
{
  "title": "Můj příspěvek",
  "body": "Obsah příspěvku",
  "userId": 1
}

Odpověď: Server vrátí vytvořený příspěvek (včetně ID).

PUT (Aktualizuj celý záznam)

Co dělá: Přepíše celý záznam novými daty.
Příklad: Upravit celý profil uživatele.
Postman:

Method: PUT
URL: https://jsonplaceholder.typicode.com/posts/1
Body (JSON):
{
  "id": 1,
  "title": "Upravený titulek",
  "body": "Upravený obsah",
  "userId": 1
}

PATCH (Aktualizuj část záznamu)

Co dělá: Změní jen určité pole (ne celý záznam).
Příklad: Změnit jen email uživatele (ne celý profil).
Postman:

Method: PATCH
URL: https://jsonplaceholder.typicode.com/posts/1
Body (JSON):
{
  "title": "Jen nový titulek"
}

DELETE (Smaž data)

Co dělá: Smaže záznam ze serveru.
Příklad: Smazat příspěvek, odstranit uživatele.
Postman:

Method: DELETE
URL: https://jsonplaceholder.typicode.com/posts/1
Zapamatujte: GET = čti, POST = vytvoř, PUT/PATCH = uprav, DELETE = smaž. To je 90 % práce s API.

Autentizace - jak prokážete, že máte právo používat API

Většina API vyžaduje autentizaci (ověření totožnosti). Proč? Aby zabránili zneužití (spam, přetížení serveru) a sledovali využití.

1. API klíč (nejčastější)

Co to je: Unikátní řetězec znaků (např. abc123xyz456), který vám poskytne služba po registraci.
Jak to funguje: Při každém požadavku pošlete API klíč v hlavičce (header) nebo v URL.

Příklad (OpenWeatherMap):

Method: GET
URL: https://api.openweathermap.org/data/2.5/weather?q=Prague&appid=VÁŠ_API_KLÍČ

Kde získat: Zaregistrujte se na openweathermap.org → Account → API keys → Copy.

2. Bearer Token (OAuth 2.0)

Co to je: Token, který dostanete po přihlášení. Má omezenou platnost (např. 1 hodina).
Jak to funguje: Pošlete přihlašovací údaje → dostanete token → ten používáte pro další požadavky.

Příklad:

Method: GET
URL: https://api.example.com/user
Headers:
  Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

3. Basic Auth (méně časté)

Co to je: Uživatelské jméno + heslo v každém požadavku.
Bezpečnost: Používá se jen přes HTTPS (šifrované spojení). Jinak = heslo viditelné.

Bezpečnost: NIKDY nevkládejte API klíče přímo do kódu, který dáte na GitHub (veřejný repozitář). Používejte environment variables (.env soubor). API klíč = jako heslo - pokud ho někdo ukradne, může zneužít vaše API.

Zpracování dat (JSON)

API vrací data ve formátu JSON (JavaScript Object Notation). Vypadá jako páry klíč-hodnota.

Příklad JSON odpovědi

{
  "name": "Jan Novák",
  "age": 30,
  "email": "jan@example.com",
  "address": {
    "city": "Praha",
    "zip": "11000"
  },
  "hobbies": ["běhání", "čtení", "programování"]
}

Jak s tím pracovat v kódu (JavaScript)

// Odeslat GET požadavek
fetch('https://jsonplaceholder.typicode.com/users/1')
  .then(response => response.json())  // Převést odpověď na JSON
  .then(data => {
    console.log(data.name);  // "Leanne Graham"
    console.log(data.email); // "Sincere@april.biz"
  });

Jak s tím pracovat v kódu (Python)

import requests

response = requests.get('https://jsonplaceholder.typicode.com/users/1')
data = response.json()  # Převést na Python dictionary

print(data['name'])  # "Leanne Graham"
print(data['email']) # "Sincere@april.biz"
Tip: Používejte online JSON formátovač (např. jsonformatter.org) k zobrazení JSON v čitelnější podobě. API někdy vrací JSON na jednom řádku → nečitelné.

Testování API (Postman a curl)

Postman (grafické rozhraní)

Proč: Vidíte vše vizuálně - metodu, URL, hlavičky, tělo požadavku, odpověď.

Základní workflow:

  1. New Request → pojmenujte (např. "Get Users")
  2. Method: GET/POST/PUT/DELETE
  3. URL: https://api.example.com/users
  4. Headers: Authorization: Bearer token (pokud potřeba)
  5. Body: JSON data (pokud POST/PUT)
  6. Send → vidíte odpověď

curl (příkazová řádka)

Proč: Rychlejší než Postman pro jednoduché testy. Používají to vývojáři při debugování.

Příklad GET:

curl https://jsonplaceholder.typicode.com/posts/1

Příklad POST:

curl -X POST https://jsonplaceholder.typicode.com/posts \
  -H "Content-Type: application/json" \
  -d '{"title": "Test", "body": "Obsah", "userId": 1}'

Stavové HTTP kódy (response codes)

Kód Význam Příklad
200 OK Úspěch Data načtena správně
201 Created Vytvořeno Nový záznam úspěšně vytvořen
400 Bad Request Chyba v požadavku Špatný formát JSON, chybějící pole
401 Unauthorized Neověřeno Chybějící nebo špatný API klíč/token
404 Not Found Nenalezeno Požadovaný záznam neexistuje
429 Too Many Requests Přetížení Překročen limit požadavků (rate limit)
500 Internal Server Error Chyba serveru Problém na straně API (ne vaše chyba)
Pravidlo: 2xx = úspěch, 4xx = vaše chyba (špatný požadavek), 5xx = chyba serveru (kontaktujte podporu API).

Časté chyby začátečníků

1. Zapomenutý API klíč nebo token

Chyba: Požadavek bez hlavičky Authorization → 401 Unauthorized.
Řešení: Zkontrolujte, že posíláte API klíč v hlavičce nebo URL.

2. Špatný formát JSON

Chyba: JSON s chybějící čárkou, uvozovkami → 400 Bad Request.
Řešení: Použijte JSON validator (jsonlint.com) před odesláním.

3. GET požadavek s tělem (body)

Chyba: GET požadavek nepoužívá tělo (body) - pouze URL parametry.
Řešení: Data pro GET pošlete v URL: ?key=value&key2=value2

4. Ignorování rate limitů

Chyba: Posíláte 1000 požadavků za minutu → 429 Too Many Requests.
Realita: API mají limity (např. 60 požadavků/minutu zdarma).
Řešení: Čtěte dokumentaci API → respektujte limity, nebo plaťte za vyšší tier.

5. API klíč na GitHubu (veřejný)

Chyba: Nahrajete kód s API klíčem na GitHub → boti ho najdou během hodin → zneužijí.
Řešení: API klíč do .env souboru → přidejte .env do .gitignore.

Realita: API klíč nahraný na GitHub = do 24 hodin najdou boti → zneužijí (spam, vytěžení vašeho kreditu). Musíte pak deaktivovat klíč a vytvořit nový.

Závěr

API = způsob, jak spolu komunikují programy přes internet. HTTP metody (GET, POST, PUT, DELETE) + autentizace (API klíč, token) + zpracování JSON dat.

Co vzít z článku:

  • Nainstalujte Postman, vyzkoušejte první GET požadavek na JSONPlaceholder API.
  • HTTP metody: GET (čti), POST (vytvoř), PUT/PATCH (uprav), DELETE (smaž).
  • Autentizace: API klíč v hlavičce nebo URL. Nikdy API klíč do veřejného GitHub repozitáře.
  • JSON = formát dat (páry klíč-hodnota). Naučte se číst strukturu JSON odpovědi.
  • Stavové kódy: 2xx = úspěch, 4xx = vaše chyba, 5xx = chyba serveru.

První akce (30 minut): Stáhněte Postman → vyzkoušejte GET požadavek na https://jsonplaceholder.typicode.com/posts → podívejte se na JSON odpověď → zkuste POST požadavek (vytvořte nový příspěvek). Hotovo - máte první zkušenost s API.

Kam dál:

  • Veřejná API pro praxi: OpenWeatherMap (počasí), Dog API (fotky psů), REST Countries (data o zemích)
  • Dokumentace HTTP: MDN Web Docs → HTTP reference
  • REST API best practices: Naučte se RESTful principy (resource-based URLs, stateless)