Python-Praxis, Folge 3: FastAPI
- ️Tue Oct 05 2021
- API
- App
- Archivierung
- Betriebssysteme
- Big Data
- Business Intelligence
- Busniness Analytics
- Cloud Computing
- Cluster
- Datenbank
- Deep Learning
- Editor
- Fileserver
- Games
- Groupware
- HPC
- Lernplattform
- Machine Learning
- Mailserver
- Open Source Software
- Persona
- Qt
- Seamonkey
- Software Defined Networking
- Storage-Software
- Suche
- Thunderbird
- VLC, Media-Player, Linux
- Webserver
Python-Praxis, Folge 3: FastAPI
Mit FastAPI, dem modernsten und vollständigsten Web-Framework für Python, lassen sich moderne Webservices realisieren. Dieser Beitrag stellt dies anhand von Beispielen vor.
Für Python existieren viele Web-Frameworks zur Realisierung von Web-Applikationen und Microservices. Viele davon blicken auf eine sehr lange Historie zurück. Zu den bekanntesten und am häufigsten verwendeten Frameworks zählen sicherlich Flask und Django. Alle Web-Frameworks haben gemein, dass sie eingehende HTTP-Requests über eine Routing-Konfiguration an eine entsprechende Methode weiterleiten. Diese Methode verarbeitet den Request und erzeugt eine HTTP-Response (Text, HTML, JSON oder Ähnliches).
FastAPI [1] als relativ neues Framework hat in der letzten Zeit besonders im Bereich der REST-Microservices starke Verbreitung gefunden. Das liegt vor allem an seinem breit gefächerten Funktionsspektrum (siehe Kasten „FastAPI: Funktionsumfang“).
- automatische Validierung aller eingehenden und ausgehenden JSON-Daten
- Schema-Definition für eingehende und ausgehende Daten entweder über Python-Typ-Annotierungen oder über das Modul Pydantic
- automatische Unterstützung von OpenAPI, vormals Swagger (Abbildung 1)
- native Unterstützung von Pythons »async«
- Websockets
- gute Dokumentation und Tutorials, einfache Zugänglichkeit
FastAPI versteht sich wie das ältere Flask als agnostisch gegenüber Datenspeicherung oder HTML-Generierung und anderen Aspekten. Es grenzt sich dadurch von Frameworks wie Django ab, die von Haus aus bereits mit einer umfangreichen Unterstützung etwa für das Persistieren von Daten oder die Authentifizierung und Autorisierung daherkommen, was sie besonders für bestimmte Arten von Web-Applikationen prädestiniert.
Installation
FastAPI setzt eine aktuelle Python-Version (3.6 oder höher) voraus und lässt sich wie gewohnt mit Pip installieren; dasselbe gilt für den WSGI-Server Hypercorn (Listing 1, erste Zeile). Er macht die FastAPI-Applikation nach außen via HTTP verfügbar. Das Beispiel in Listing 2 definiert eine Methode »double()« als REST-Endpunkt, die einen übergebenen Wert verdoppelt. Nach dem Installieren lässt sich der Code mit dem Aufruf aus der zweiten Zeile von Listing 1 starten.
$ pip3 install fastapi hypercorn $ bin/hypercorn app1:app
from fastapi import FastAPI app = FastAPI() # dict als Resultat # -> JSON Response @app.get("/") def root(): return {"hello": "world"} @app.get("/double") def double(number: int): return number * 2 # dict als Resultat # -> JSON Response @app.get("/double_json") def double_json(number: int): return dict(result=number * 2)
Der Zugriff auf die API erfolgt danach via http://localhost:8000. Die Eingabe von »curl http://localhost:8000« liefert »{„hello“:“world“}« zurück. Der Aufruf »curl http://localhost:8000/double_json?number=32« ergibt dagegen erwartungsgemäß »{„result“:64}«. Wer versucht, die Webseite mit einem unpassenden Parameter aufzurufen, erntet eine Fehlermeldung (Listing 3).
> curl http://localhost:8000/double_json?number=text
{"detail":[{"loc":["query","number"],"msg":"value is not a valid integer","type":"type_error.integer"}]}
Die Dokumentation zu FastAPI verweist häufig auf den besonders schnellen WSGI-Server Uvicorn. Je nach Betriebssystem kann die Installation von Uvicorn aber kompliziert sein. Daher verwenden wir meistens Hypercorn, der etwas langsamer arbeitet, aber bei der Installation weniger Probleme bereitet.
Verwandte Artikel
Editorial
Ihre stets als Vorteil angepriesene dezentrale Struktur könnte der Kryptowährung Bitcoin angesichts des dringend notwendigen Updates auf eine Post-Quantum-Verschlüsselung demnächst auf die Füße fallen.
Linux 6.12 LTS im Überblick
20 Jahre lang pflegten die Entwickler die Echtzeitunterstützung außerhalb des Mainline-Kernels. Jetzt avanciert sie mit Linux 6.12 zum offiziellen Teil des Betriebssystemkerns.
NASA: Open Source seit 1958?
Nach dem Sputnik-Schock gegründet, hat die NASA in den über sechzig Jahren ihres Bestehens stets offene und freie Projekte gestartet und gefördert. Ohne Open Source und Open Science wären zahlreiche davon unmöglich, wissenschaftlicher Fortschritt viel schwerer.
Open Source bei der European Space Agency
Anders als die NASA ist die ESA dezentral organisiert, international und kommerziell orientiert. Obwohl sie auch deutlich weniger Top-Down aufgebaut ist, gibt es Fesseln, die Open Source nicht immer in dem Umfang erlauben, den die Agency als auch die Wissenschaftler wünschen. Doch das ändert...
Wie Firmen aus der Raumfahrtbranche OpenProject einsetzen
OpenProject ist eine der komplexeren Open-Source-Anwendungen und beweist auch in der Raumfahrtindustrie, dass Open Source selbst komplexen Aufgabenstellungen gewachsen ist.
In eigener Sache: DELUG-DVD
Auf der Heft-DVD finden Sie diesmal das aktuelle Grml 2024.12, den Animationsfilm "Ada und Zangemann", 16 Videos von der 38C3, ein E-Book über Flat File CMS, den Proxmox Backup Server 3.3 und vieles mehr.