Łą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.