Podstawy REST API do gromadzenia danych
HTTP GET/POST, nagłówki, uwierzytelnianie (klucz API, Bearer) i parsowanie JSON za pomocą requests.
Podstawy REST API do gromadzenia danych to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Dlaczego interfejsy API mają znaczenie dla AI
Modele są tylko tak dobre, jak dane, na których je oparto. Internetowe interfejsy API pozwalają pobierać na żądanie aktualne, uporządkowane dane — pogodę, ceny, wpisy z mediów społecznościowych i publiczne zbiory danych — zamiast polegać na jednym statycznym pliku.
W tym kursie używane są Python oraz popularna biblioteka requests do pobierania i przechowywania tych danych.
Czym jest REST API
REST API udostępnia zasoby za pośrednictwem protokołu HTTP. Wysyłasz żądanie do adresu URL (punktu końcowego), a w odpowiedzi otrzymujesz dane, zwykle w formacie JSON.
Najważniejsze metody HTTP:
GET— odczyt danychPOST— tworzenie danychPUT/PATCH— aktualizowanie danychDELETE— usuwanie danych
Do zbierania danych używa się głównie GET.
Pierwsze żądanie GET
requests.get(url) wysyła żądanie GET i zwraca obiekt Response. Odpowiedź zawiera kod stanu, nagłówki i treść.
import requests
resp = requests.get("https://api.example.com/users")
print(resp.status_code) # 200
print(resp.text[:200]) # raw body as a stringSprawdzanie response.status_code
Kod stanu informuje, czy żądanie zakończyło się powodzeniem:
200OK301/302przekierowanie400nieprawidłowe żądanie401/403problem z uwierzytelnianiem404nie znaleziono429przekroczono limit żądań500błąd serwera
resp = requests.get(url)
if resp.status_code == 200:
print("Success")
else:
print("Failed:", resp.status_code)Parsowanie JSON za pomocą response.json()
Większość interfejsów API zwraca dane w formacie JSON. response.json() automatycznie parsuje treść do postaci słowników i list języka Python.
Nie parsuj JSON-a ręcznie — .json() zajmuje się tym i zgłasza czytelny błąd, jeśli treść nie zawiera prawidłowego JSON-a.
resp = requests.get("https://api.example.com/users/1")
data = resp.json()
print(data["name"])
print(data["email"])Wysyłanie parametrów zapytania za pomocą params
Filtruj żądania i konfiguruj je za pomocą parametrów zapytania. Przekaż słownik do params, a requests zbuduje za Ciebie adres URL, zajmując się kodowaniem.
W przykładzie adres URL będzie zawierać ?city=London&units=metric.
params = {"city": "London", "units": "metric"}
resp = requests.get("https://api.example.com/weather", params=params)
print(resp.url)
print(resp.json())Wysyłanie nagłówków
Nagłówki przenoszą metadane, takie jak typ treści, user agent albo klucz lub token API. Przekaż je jako słownik do headers.
Wiele interfejsów API wymaga nagłówka Authorization, aby przyznać dostęp.
headers = {
"Authorization": "Bearer YOUR_TOKEN",
"User-Agent": "my-data-collector/1.0",
}
resp = requests.get("https://api.example.com/data", headers=headers)
print(resp.json())raise_for_status() dla niezawodnego kodu
Zamiast ręcznie sprawdzać kody wywołaj resp.raise_for_status(). Dla każdej odpowiedzi 4xx lub 5xx zgłasza on wyjątek HTTPError, dzięki czemu błędy są natychmiast widoczne.
Umieść to wywołanie w bloku try/except, aby obsługiwać błędy w kontrolowany sposób.
import requests
try:
resp = requests.get(url, timeout=10)
resp.raise_for_status()
data = resp.json()
except requests.HTTPError as e:
print("HTTP error:", e)
except requests.RequestException as e:
print("Network error:", e)Zawsze ustawiaj limit czasu
Bez parametru timeout zawieszony serwer może zablokować skrypt na zawsze. Zawsze go przekazuj, podając wartość w sekundach.
W pętlach zbierających dane i wysyłających żądania do tysięcy punktów końcowych brak limitu czasu jest częstą przyczyną zawieszania się zadań.
resp = requests.get(url, timeout=10) # give up after 10 secondsPonowne wykorzystywanie połączeń za pomocą Session
Obiekt requests.Session ponownie wykorzystuje bazowe połączenie TCP między żądaniami i pozwala ustawić nagłówki tylko raz. Przy wielu wywołaniach do tego samego hosta jest to znacznie szybsze rozwiązanie.
import requests
session = requests.Session()
session.headers.update({"Authorization": "Bearer YOUR_TOKEN"})
for uid in [1, 2, 3]:
resp = session.get(f"https://api.example.com/users/{uid}")
print(resp.json()["name"])
session.close()Czysta funkcja pomocnicza do pobierania danych
Umieść ten schemat w funkcji wielokrotnego użytku: skonfiguruj sesję, zastosuj limit czasu, zgłaszaj błędy i zwracaj sparsowany JSON.
W następnych lekcjach rozbudujesz tę funkcję pomocniczą o stronicowanie i przechowywanie danych.
def fetch_json(session, url, params=None):
resp = session.get(url, params=params, timeout=10)
resp.raise_for_status()
return resp.json()Szybkie sprawdzenie: niezawodne żądania
Chcesz, aby Twój kod automatycznie zgłaszał wyjątek po otrzymaniu odpowiedzi 404 lub 500.
Podsumowanie: podstawy REST API
Potrafisz już zbierać dane za pośrednictwem protokołu HTTP:
requests.get(url, params=..., headers=...)do wysyłania żądańresponse.status_codeiraise_for_status()do wykrywania błędówresponse.json()do parsowania treścitimeoutdo zapobiegania zawieszaniu się programurequests.Sessiondo ponownego wykorzystywania połączeń i nagłówków
Następny temat: zbieranie zbiorów danych obejmujących wiele stron.
Często zadawane pytania
Czy lekcja „Podstawy REST API do gromadzenia danych” jest bezpłatna?
Tak — pełny tekst „Podstawy REST API do gromadzenia danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawy REST API do gromadzenia danych”?
HTTP GET/POST, nagłówki, uwierzytelnianie (klucz API, Bearer) i parsowanie JSON za pomocą requests. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Podstawy REST API do gromadzenia danych”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy REST API do gromadzenia danych
- Stronicowanie i gromadzenie dużych zbiorów danych
- Efektywne przechowywanie zebranych danych
- Praca z publicznymi interfejsami API danych