Zum Inhalt springen

3. APIs & Requests

Vorwort

Im ersten Teil haben wir bereits die Grundlagen von Python angeschaut. In diesem Kapitel werden wir lernen, wie APIs funktionieren und werden ein Python Programm machen, welches zufällige Witze von einer API abruft und diese ausgibt.

Falls du diesen Abschnitt nicht verstehst, kannst du jederzeit auf Part 1 zurückgreifen.

1. Was ist eine API?

API steht für „Application Programming Interface“ und ist eine Schnittstelle, die es ermöglicht, auf eine Plattform zuzugreifen und zu interagieren (zB. Informationen tauschen).

Um in Python eine API Anfrage zu machen, verwenden wir die „Requests“ Library, die es ermöglicht, Anfragen an eine Website zu senden und die Antworten zu verarbeiten.
Zuerst installieren wir die Requests Library in der CMD wieder mit „pip install requests“.

Hier ist ein einfaches Beispiel, wie man die Requests Library verwenden kann, um eine Anfrage an eine Website zu senden und die Antwort auszugeben:

import requests

response = requests.get("https://timeapi.io/api/TimeZone/zone?timeZone=Europe/Zurich")

print(response.text)

In diesem Beispiel machen wir eine .get (GET) Anfrage an die Webseite „https://timeapi.io/“.
Schlussendlich werden wir mit response.text die Antwort in der Konsole ausgeben.
Die Antwort wird ungefähr so aussehen:

{
    "timeZone": "Europe/Zurich",
    "currentLocalTime": "2023-05-18T17:13:14.4016845",
    "currentUtcOffset": {
        "seconds": 7200,
        "milliseconds": 7200000,
        "ticks": 72000000000,
        "nanoseconds": 7200000000000
    },
    "standardUtcOffset": {
        "seconds": 3600,
        "milliseconds": 3600000,
        "ticks": 36000000000,
        "nanoseconds": 3600000000000
    },
    "hasDayLightSaving": true,
    "isDayLightSavingActive": true,
...

Diese Antwort ist im JSON Format. Um nur ein gewünschtes Feld auszugeben, können wir die JSON Library von Python verwenden. Dafür importieren wir sie zuerst mit ‚import json‘ und laden dann nur das Feld ‚currentLocalTime‘ von der Antwort:

import requests
import json

response = requests.get("https://timeapi.io/api/TimeZone/zone?timeZone=Europe/Zurich")

json_obj = json.loads(response.content) # Hier laden wir den Content (Inhalt) von der JSON Antwort und speichern den Inhalt als "json_obj"
extracted_answer = json_obj['currentLocalTime'] # Das "currentLocalTime" Feld kann zu anderen JSON Feldern geändert werden. Wir extrahieren dann aus dem vorher gemachten JSON Objekt die Variabel "currentLocalTime"
print ("Aktuelle Zeit: " + extracted_answer) # Schlussendlich geben wir die Zeitzone in der Konsole aus.

Das gibt dann ‚Aktuelle Zeit: ZEIT‘ aus.
Wenn du andere Informationen brauchst, kannst du im Internet nach kostenlosen API’s suchen.
Natürlich kann man in Python die Zeit auch ohne API herausfinden, wir verwenden für dieses Beispiel jedoch die Zeit, da dies sehr einfach ist. Diese können dann mithilfe dem oberen Beispiel verwendet werden.
Falls Probleme auftreten, kannst du immer noch ChatGPT fragen.

2. Zufällige Witze

Wir können mit Hilfe dieses Wissens einen Witze Generator erstellen.
Um dies zu tun, können wir die JokeAPI verwenden. Dies ist eine kostenlose API, welche eine grosse Menge an zufälligen Witzen beinhaltet.

Um einen Request an die JokeAPI zu machen, gehen wir ähnlich vor wie oben:
1. Wir senden einen Request an die JokeAPI
2. Da die JokeAPI kein JSON zurückgibt, sondern nur normaler Text, können wir die Antwort einfach ausgeben

import requests

joke = requests.get("https://v2.jokeapi.dev/joke/Any?format=txt&lang=de")

print (joke.text)

Nach Ausführung sollte das einen Witz ausgeben.

3. Was können wir nun tun?

Mit Hilfe des oberen Beispiels können wir nun ein einfach zu bedienenden Witzegenerator erstellen. Wir können dies tun, indem wir eine Schleife hinzufügen, welche auf die ENTER Taste wartet und dann ein neuer Witz anzeigt:

import requests

while True:
    joke = requests.get("https://v2.jokeapi.dev/joke/Any?format=txt&lang=de")
    print (joke)
    user_input = input("Drücke Enter zum Fortfahren oder 'q' zum Beenden: ")
    if user_input == "":
        print("Neuer Witz wird generiert...")
    elif user_input == "q":
        print("Schleife beendet.")
        break
    else:
        print("Ungültige Eingabe. Bitte versuche es erneut.")

Wenn man die Enter Taste drückt, sollte das Programm einen Witz generieren und mit der Q Taste das Programm beenden.

Abschluss

In diesem Kapitel haben wir APIs kennengelernt und deren Verwendung. APIs werden an sehr vielen Orten beim Programmieren eingesetzt, um an Informationen zu gelangen, welche auf einem anderen Server gespeichert sind.