Przejdź do głównej zawartości

Integracja aplikacji PHP z zewnętrznym API

PHP jako klient API

Nowoczesne aplikacje rzadko działają w izolacji. Potrzebują danych z zewnętrznych serwisów: pogoda, kursy walut, mapy, płatności, social media. PHP może być nie tylko serwerem obsługującym requesty, ale też klientem wysyłającym requesty do innych API. W tej prezentacji wyjaśnisz jak aplikacja PHP komunikuje się z zewnętrznym API przez HTTP, jak przetwarza odpowiedzi JSON, jak się autoryzuje tokenem i jak radzi sobie z błędami i limitami (rate limiting).

  1. Co to jest API? - Definicja w kontekście HTTP i JSON
  2. Jak to działa? - Mechanizm: PHP request → API → JSON response → przetworzenie
  3. Kiedy używać? - Dane pogodowe, waluty, geolokacja, płatności
  4. Na co uważać? - Błędy sieci, status codes, limity, awarie API
  5. Jak robić dobrze? - Obsługa błędów, retry, cache, bezpieczne przechowywanie tokenów
  1. Czym jest API (w kontekście HTTP)

    • API = Application Programming Interface
    • W webie: endpoint HTTP, który zwraca dane (najczęściej JSON)
    • Przykłady: OpenWeatherMap, ExchangeRate API, Google Maps API
  2. Request i Response

    • Request: metoda (GET/POST), URL, nagłówki (Authorization), body
    • Response: status code (200, 401, 429, 500), body (JSON)
    • PHP: file_get_contents() lub cURL do wysyłania requestów
  3. Autoryzacja w API

    • API Key - klucz w nagłówku lub URL
    • Bearer Token - token w nagłówku Authorization
    • Bezpieczeństwo: nie commituj tokenów do repo!
  4. Status codes w integracji

    • 200 OK - sukces
    • 401 Unauthorized - zły token
    • 429 Too Many Requests - przekroczony limit
    • 500 Internal Server Error - błąd po stronie API
  5. Obsługa błędów

    • Co robić gdy API nie odpowiada?
    • Co robić gdy zwraca błąd?
    • Fallback, cache, komunikat dla użytkownika

Schemat przepływu

PHP → HTTP Request → Zewnętrzne API → JSON Response → Przetworzenie → Output dla użytkownika

Przykład request/response

GET /api/weather?city=Warsaw + Response JSON z danymi

Zawartość:

  • Wyjaśnij ideę integracji z API - czym jest API, przepływ danych
  • Pokaż 1 schemat: PHP → API → JSON → wynik
  • Pokaż 1 przykład request/response (może być pseudo-kod)

Forma: 10 slajdów, 10 minut prezentacji

Ocena: 3.0
  1. Slajd tytułowy - Tytuł, autorzy, data
  2. Agenda - Plan prezentacji
  3. Problem - Skąd brać dane, których nie mamy? (pogoda, waluty, mapy)
  4. Co to jest API? - Definicja, endpoint, JSON
  5. Schemat przepływu - PHP → API → JSON → wynik
  6. Przykład requestu - URL, nagłówki, metoda
  7. Przykład response - Status code, JSON body
  8. Autoryzacja - API Key, Bearer Token
  9. Status codes - 200, 401, 429, 500 - co znaczą
  10. Obsługa błędów - Co robić gdy API nie działa
  11. Dobre praktyki - Cache, retry, bezpieczeństwo tokenów
  12. Podsumowanie i źródła

Aplikacja wyświetla pogodę dla miasta. PHP wysyła request do OpenWeatherMap:

GET https://api.openweathermap.org/data/2.5/weather?q=Warsaw&appid=YOUR_KEY

API zwraca JSON z temperaturą, wilgotnością, opisem. PHP parsuje JSON i wyświetla użytkownikowi “Warszawa: 15°C, słonecznie”.

Użytkownik wchodzi na stronę z kursami walut. Twoje API zewnętrzne nie odpowiada (timeout 30 sekund). Bez obsługi błędów - użytkownik czeka i czeka. Z obsługą:

  • Timeout 5 sekund
  • Fallback: “Kursy walut chwilowo niedostępne, spróbuj później”
  • Lub: pokaż ostatnie zapisane kursy z cache

API darmowe ma limit 100 requestów/minutę. Twoja aplikacja jest popularna i przekracza limit. API zwraca 429 Too Many Requests. Bez obsługi - aplikacja “nie działa”. Z obsługą:

  • Sprawdź nagłówek Retry-After
  • Poczekaj i spróbuj ponownie
  • Lub: cache agresywniej (nie odpytuj co request, tylko co 5 minut)

Przypadek: Integracja z API płatności

Aplikacja e-commerce integruje się z API płatności (np. Stripe/PayU).

Wyzwania:

  • Token API musi być bezpieczny (nigdy w kodzie źródłowym!)
  • Każdy błąd oznacza stracone pieniądze
  • Logi są krytyczne dla rozwiązywania sporów

Rozwiązania:

  1. Bezpieczeństwo tokenu:

    • Zmienna środowiskowa: $_ENV['PAYMENT_API_KEY']
    • Plik .env dodany do .gitignore
  2. Retry z backoff:

    • Błąd 5xx? Poczekaj 1s, spróbuj ponownie
    • Znowu błąd? Poczekaj 2s, spróbuj ponownie
    • Max 3 próby, potem fallback
  3. Logowanie:

    • Każdy request: timestamp, user_id, amount
    • Każdy response: status, transaction_id
    • Każdy błąd: pełne szczegóły do debugowania
  4. Cache:

    • Status transakcji sprawdzany max raz na 5 sekund
    • Lista metod płatności cache’owana na 1h

2-3 statusy HTTP

Pokaż konkretnie: 200 = OK, 401 = zły token, 429 = limit przekroczony.

Slajd o awarii

“Co jeśli API padnie?” - fallback, komunikat, cache. To pokazuje dojrzałość.

Prawdziwe przykłady

Pokaż prawdziwe API: OpenWeatherMap, ExchangeRate. To bardziej przekonujące.

Bezpieczeństwo tokenów

Jeden slajd: “Nigdy nie commituj tokenów do repo!” - to ważna lekcja.

Prezentacja to umiejętność zawodowa!

Integracja z zewnętrznymi API to codzienność w pracy programisty. Każda nowoczesna aplikacja korzysta z wielu serwisów: płatności, mapy, powiadomienia, social media.

Wykorzystajcie lekcje - zarejestrujcie się na darmowe API (OpenWeatherMap) i przetestujcie w praktyce!

Współpraca to klucz - podzielcie się: jedna osoba zajmuje się request/response, druga obsługą błędów i bezpieczeństwem.

Pamiętajcie: Każde API może zawieść. Planuj na wypadek awarii od początku.