Rest-API mittels Python & FastAPI
Hier ein etwas ungewöhnlicher Artikel für eine PHP-Website: Wie erstelle ich mittels Python eine REST-API?
Warum Python?
PHP ist eine super Sprache, auch für die Erstellung von REST-APIs. Der einfache Einstieg und das breite Angebot an Webhosting-Tarifen macht PHP gerade für Einsteiger eine sehr gute Programmiersprache.
Es gibt aber Bereiche, da besitzt PHP schwächen. Geht es beispielsweise im Machine Learning und die Nutzung intelligenter Systeme, wird man bei PHP lange suche bis man dort brauchbare Programmbibliotheken findet.
In diesem Bereich ist Python extrem stark: Der Großteil der Forschung und Entwicklung im Bereich Machine Learning / Künstliche Intelligenz passiert mit Python. So ist es verdammt einfach, fertigen Python-Code zu finden z.B. für die maschinelle Übersetzung, das Auswerten von Bildern, die Klassifizierung von Text, oder das Umwandeln von Sprache in Text. Auch im Bereich Bitcoin (siehe hier für Erfahrungen) ist Python stark aufgestellt.
Zum Glück ist Python schnell gelernt, und dank FastAPI lassen sich innerhalb weniger Minuten diese Modelle in eine nette REST API verpacken und anderweitig verwenden.
Python installieren
Zuerst muss Python installiert werden. Ich nutze dazu gerne Anaconda bzw. unter Linux Miniconda. Achtet bei der Installation darauf eine halbwegs aktuelle Python Version zu nehmen, mindestens Python 3.6.
FastAPI installieren
Als nächstes installieren wir FastAPI. Gebt dazu in die Kommandozeile folgendes ein:
1 |
pip install fastapi |
Während wir bei PHP zumeist Apache oder Nginx als Webserver nutzen, nutzen wir mit Python Uvicorn. Dies könnt ihr so installieren:
1 |
pip install uvicorn[standard] |
Erste REST-API mittels FastAPI
Nun erstellen wir die main.py mit folgendem Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from typing import Optional from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} namen = ["Paul", "Lisa", "Lena", "Karl"] @app.get("/namen/{id}") def read_item(id: int): return {"name": namen[id]} |
Diese Anwendung hat zwei Pfade: Unter dem Hauptpfad (/) wird nur ein Array mit dem Inhalt "Hello" => "World" zurück gegeben. Unter der Route /namen/{id}, können wir die verschiedenen Namen im Array namen abrufen
Anwendung starten
Zum Schluss starten wir den Server mit unserer kleinen API. Gebt dazu in der Kommandozeile folgendes ein:
1 |
uvicorn main:app --reload |
Im Anschluss könnt ihr im Browser die URL: http://localhost:8000/name/1
aufrufen und erhaltet als Rückgabewert {"name": "Lisa"}
Weitere Schritte
Dies war nur eine sehr kurze und knappe Einführung in Python und FastAPI. Wie gezeigt, hat man damit innerhalb weniger Zeilen eine Rest-API programmiert.
Für alle weiteren Infos empfehle ich die sehr gute FastAPI Dokumentation.
Autor: Nils Reimers