8.1. APIs#

8.1.1. Was sind APIs?#

Kurze Erklärung im Videoformat: https://youtu.be/KLe2lCEy-Xw?t=76

API steht für Application Programming Interface, auf Deutsch als “Anwendungsprogrammierschnittstelle” übersetzt. APIs ermöglichen die Kommunikation zwischen Softwaresystemen bzw. Programmen, also die “Maschine-zu-Maschine”-Kommunikation. Entwickler:innen können APIs nutzen, um auf Daten oder Dienste anderer Softwaresysteme zuzugreifen und in ihren eigenen Code einzubinden. Das Konzept kennen wir im Grunde bereits: Auch beim Aufruf von Funktionen aus verschiedenen Bibliotheken oder Modulen in Python haben wir bereits Schnittstellen verwendet, um auf vordefinierte Funktionen zuzugreifen, ohne die Implementierungsdetails zu kennen.

Man kann sich eine API also vielleicht abstrakt wie eine Tür vorstellen, durch die Programme Informationen anfordern oder teilen können. Sie definiert, welche Anfragen gestellt werden können, wie die Antworten aussehen und wie man auf die gewünschten Informationen zugreifen kann.

Wenn wir in diesem Abschnitt von APIs sprechen, dann meinen wir aber eine ganz bestimmte Art von API: Web-APIs, und genauer gesagt APIs, die von verschiedenen Websitebetreiber:innen gezielt für den Zugriff auf Daten bereitgestellt werden.

8.1.2. Web-APIs#

Web-APIs ermöglichen verschiedenen (Web-)Anwendungen, und konkret Client und Server, miteinander zu kommunizieren und Daten auszutauschen.

Beim Aufruf der Seite https://quotes.toscrape.com/js/ haben wir beispielsweise mithilfe der Browser-Entwicklertools beobachtet, dass unter dem Tab “Netzwerk” mehrere HTTP-Anfragen gestellt wurden. Es wurde zum Beispiel eine Javascript-Datei mithilfe einer HTTP-Anfrage vom Webserver angefragt. Diese Anfrage hat der Browser “automatisch” gestellt, ohne, dass wir dafür etwas tun mussten. Dabei hat der Browser unter der Motorhaube auf eine Web-API zugegriffen, genauer gesagt auf eine Browser-API, die im Browser “vorinstalliert” ist.

APIs können aber auch von Websitebetreiber:innen selbst bereitgestellt werden, um Nutzer:innen und anderen Anwendungen einen direkten Zugang zu Daten auf dem Server zu ermöglichen. Genau diese APIs können wir als Forscher:innen anzapfen, um Forschungsdaten direkt herunterzuladen, zum Beispiel Metadaten zum Bestand eines Archivs, Statistiken, oder sogar Volltexte, Musik- oder Bildateien.

Bei der Entwicklung von Web-APIs greifen Entwickler:innen auf vordefinierte “Architekturstile” zurück, also auf Ansätze, wie die Gesamtstruktur einer API entworfen wird. Die meist verwendete Ansatz zum Entwerfen von dieser Art von Web-API nennt sich REST (Representational State Transfer, dt. “Repräsentationsstatustransfer”). APIs, die nach diesem Ansatz implementiert sind, nennt man auch RESTful APIs. RESTful APIs nutzen zur Kommunikation zwischen Client und Server das HTTP-Protokoll. Da REST APIs HTTP verwenden, können bei der Abfrage von Ressourcen über RESTful APIs ebenfalls die HTTP-Methode GET verwendet werden.

RESTful API Schaubild

Fig. 8.1 Schaubild RESTful API. Bild: https://www.youtube.com/watch?v=-mN3VyJuCjM#

8.1.3. Welche Daten können über APIs abgerufen werden?#

Bei der Anfrage einer Website war der Body einer erfolgreichen HTTP-Antwort ein HTML-Dokument, das in Python als String repräsentiert wird. Standardmäßig ist der Body einer HTTP-Antwort auf eine Anfrage über eine REST API dagegen ein JSON-String. JSON ist ein Datenformat in menschenlesbarer Textform zum Zweck des Datensaustauschs zwischen Anwendungen. Die Syntax einer JSON-Datei sieht in etwa so aus wie ein Python-Dictionary. Während HTML-Strings zur Weiterverarbeitung in BeautifulSoup-Objekte umgewandelt werden können, können JSON-Strings deswegen zur Weiterverarbeitung einfach in Python Dictionaries umgewandelt werden.

RESTful APIs können aber auch so konfiguriert werden, dass sie Daten direkt in anderen Formaten zurückgeben, zum Beispiel als Plaintext oder Bilddateien. Die genaue Konfiguration und das unterstützte Spektrum an Antwortformaten hängen von der konkreten Implementierung der API ab.

Zur Abfrage einer Ressource wird dabei in der HTTP-Anfrage eine URI (= Uniform Resource Identifier), also in dem Fall ein Pfad zu einer konkreten Ressource auf einem Server, angegeben. Diese URIs nennen sich dann auch Endpunkte oder “Endpoints”.

Ein Unternehmen kann zum Beispiel über eine öffentliche API mithilfe verschiedener URIs verschiedene Arten von Daten bereitstellen. Im Beispiel unten wird eine Auflistung aller alle Nutzer:innen eines sozialen Netzwerks im JSON-Format als Antwort auf die HTTP-Anfrage zurückgegeben, aber es sind auch zwei weitere Endpunkte abgebildet: Eine Auflistung aller Posts der Nutzer:innen sowie Daten zu deren Follower:innen.

RESTful API Schaubild

Fig. 8.2 Schaubild Beispielabfrage über eine RESTful API. Bild: Alexander Barge#

8.1.4. Wer kann APIs benutzen?#

Manche APIs sind öffentlich zugänglich (Public APIs), andere sind öffentlich zugänglich, aber erfordern eine Authentifizierung via API Key. Der Key kann normalerweise recht unbürokratisch und kostenlos über die Dokumentationsseiten zu der Schnittstelle beantragt werden. Ein Beispiel hierfür ist die API des Guardian: https://open-platform.theguardian.com/documentation/. Aber es gibt auch APIs, die nur über einen proprietären Key angezapft werden dürfen. Die vormals kostenlose Twitter API wurde beispielsweise mit Elon Musks Übernahme des Unternehmens zu einer Bezahl-API.

8.1.5. Beispiele#

Misc

Unternehmen

Institutionen

Medien

Forschungsprojekte, spezialisierte Forschungsdatenbanken:

Archive

Bibliotheken:

LOC APIs

LOC Collections

LOC Tutorials

Before you scrape…

Manchmal gibt es auch Institutionen, die keine API bereitstellen, sondern direkt ganze Korpora zum Donwload bereitstellen, zum Beispiel:

8.1.6. Praxis#

In der heutigen Stunde und in der Stunde nächste Woche werden wir uns zwei APIs genauer ansehen. Und ihr werdet lernen, wie ihr mithilfe von Python Abfragen an die APIs stellt, um bestimmte Daten zu erhalten. Zunächst schauen wir uns die DraCor-API an, und danach die API der Library of Congress.

8.1.7. Quellen#

  1. Alexander Barge. Vorlesung "Programmieren mobiler Anwendungen: APIs & Schnittstellen-Entwicklung". 2020. URL: https://mediathek.htw-berlin.de/video/VL-6-2D-Prog2E-mobiler-Anwendungen3A-APIs-26amp3B-Schnittstellen2DEntwicklung/b748cb18680d2f27a66b05c6a788c7fc.

  2. Frank Dopatka. Vorlesung "Webbasierte Systeme". JSON. 2021. URL: https://www.youtube.com/watch?v=zHQdDnB0-JM.

  3. ByteByteGo. What Is REST API? Examples And How To Use It. 2022. URL: https://www.youtube.com/watch?v=-mN3VyJuCjM.

  4. MDN Contributors. Introduction to Web APIs. 2023. URL: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Introduction.

  5. MDN Contributors. Third-Party APIs. 2023. URL: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Third_party_APIs.

  6. MDN Contributors. Web APIs. 2023. URL: https://developer.mozilla.org/en-US/docs/Web/API.