Łączymy się z API serwującym losowe dowcipy o Chucku Norrisie w formacie JSON z poziomu projektu Pythona. Pobieramy informację i wyświetlamy ją w terminalu. Korzystamy z zewnętrznej biblioteki requests. Świetny wstęp do dalszych mini-projektów.
Potrzebne podstawy
Aby ruszyć z projektem, musimy mieć pewne podstawy, których przesadnie tłumaczyć nie będę. Przede wszystkim:
- Python zainstalowany na komputerze
- Dobry edytor się przyda – PyCharm albo VSCode
- Umiejętność tworzenia wirtualnego środowiska dla projektu – PyCharm może pomóc, każdy nowy projekt otrzymuje z automatu nowego venva (virtual environment)
- Umiejętność instalowania zewnętrznych bibliotek przy pomocy narzędzia PIP
A zatem tak – odpalamy PyCharma, tworzymy nowy projekt, na samym dole z zakładki „run” przechodzimy do zakładki „terminal”.
Jesteśmy na dobrym tropie jeżeli nasz terminal pokazuje coś mniej więcej takiego:
(venv) C:\Users\(...)\nazwa projektu>
Jeśli jednak tego (venv) przed ścieżką do naszego projektu nie mamy – musimy to sobie włączyć w PyCharmie, jak to zrobić można wyszukać w internecie.
Dalej, w tym terminalu wpisujemy komendę:
pip install requests
Być może zamiast pip będziemy musieli wpisać pip3 (na Linuksie na pewno). Tak czy inaczej, jeżeli dostaniemy informację o tym, że biblioteczka została zainstalowana – wszystko jest w porządku.
Dodam, że właśnie zainstalowaliśmy tę biblioteczkę do naszego venva, naszego wirtualnego środowiska, do konkretnego projektu i tylko niego.
Używamy requests – Chuck Norris API
Chuck Norris API to proste API, które istnieje od dawna, rzadko się zmienia, idealne do wprowadzenia do biblioteki requests.
Pod adresem https://api.chucknorris.io/jokes/random możemy znaleźć zawsze losowy dowcip o Chucku Norrisie w formacie JSON.
Teraz spróbujemy się z tym API połączyć:
import requests
response = requests.get("https://api.chucknorris.io/jokes/random")
if response.ok:
data = response.json()
print(data)
Jeżeli dostaliśmy odpowiedź z serwera OK, to powinniśmy zobaczyć nasz dowcip w takim mniej więcej formacie:
{'categories': [],
'created_at': '2020-01-05 13:42:22.089095',
'icon_url': 'https://assets.chucknorris.host/img/avatar/chuck-norris.png',
'id': 'mS8j7PTsTiW55ZgrM_bQSQ',
'updated_at': '2020-01-05 13:42:22.089095',
'url': 'https://api.chucknorris.io/jokes/mS8j7PTsTiW55ZgrM_bQSQ',
'value': 'Chuck Norris thinks condoms are for making Hennessy popsicles in the freezer.'}
Aha, czyli data to słownik, zaś sam dowcip znajduje się pod kluczem value. Nic prostszego, niż go wyświetlić:
import requests
response = requests.get("https://api.chucknorris.io/jokes/random")
if response.ok:
data = response.json()
print(data["value"])
To co zrobiliśmy może wydawać się albo bardzo trudne i dziwne (np. format JSON) albo wręcz banalne, ale większość zadań związanych z pobieraniem informacji z jakiegoś API metodą GET to mniej więcej to, co zrobiliśmy, tylko te informacje będą bardziej skomplikowane, podobnie nasze operacje na nich.
Pierwszy mini-projekt, z naciskiem na mini, zrobiony, gratulacje. Umiejętność łączenia się z internetem, pobierania danych i działania na nich przyda nam się jeszcze wielokrotnie, więc potraktujmy ten epizod jako wstęp do dalszych mini-projektów.