
Wenn Sie diesen Artikel lesen, sind Sie wahrscheinlich bereits mit den Möglichkeiten vertraut, die sich durch die Nutzung von APIs (Application Programming Interface) ergeben.
Durch die Integration eines der vielen verfĂŒgbaren offenen APIs in Ihre Anwendung können Sie deren FunktionalitĂ€t erweitern oder mit den benötigten Daten anreichen. Aber was, wenn Sie eine einzigartige Funktion entwickelt haben, die Sie mit der Community teilen möchten?
Die Antwort ist einfach: Sie mĂŒssen .
Obwohl dies zunÀchst wie eine komplexe Aufgabe erscheinen mag, ist es tatsÀchlich recht einfach. Wir zeigen Ihnen, wie Sie das mit Python umsetzen können.
Was Sie fĂŒr den Start benötigen
FĂŒr die Entwicklung einer API sind folgende Dinge erforderlich:
- Python 3;
- â ein einfach zu nutzendes Framework zur Erstellung von Webanwendungen;
- â ein Erweiterung fĂŒr Flask, die es ermöglicht, REST APIs schnell und mit minimalen Einstellungen zu entwickeln.
Die Installation erfolgt mit dem Befehl:
pip install flask-restfulWir empfehlen einen kostenlosen Programmier-Intensivkurs fĂŒr AnfĂ€nger:
â vom 26. bis 28. August. Ein kostenloses Intensivtraining, das Ihnen hilft zu verstehen, wie Bot-Assistenten funktionieren, die Besonderheiten der Arbeit mit der Telegram-API und andere Feinheiten. Die drei besten Teilnehmer erhalten von Skillbox 30.000 Rubel..
Bevor wir beginnen
Wir planen die Entwicklung eines RESTful APIs mit grundlegenden .
Um die Aufgabe vollstÀndig zu verstehen, lassen Sie uns zwei der oben genannten Begriffe klÀren.
Was ist REST?
REST API (Representational State Transfer) ist eine API, die HTTP-Anfragen zum Austausch von Daten verwendet.
REST APIs mĂŒssen bestimmten Kriterien entsprechen:
- Client-Server-Architektur: Der Client interagiert mit der BenutzeroberflÀche, wÀhrend der Server mit dem Backend und dem Datenspeicher arbeitet. Client und Server sind unabhÀngig, jeder kann unabhÀngig vom anderen ersetzt werden.
- Zustandslos â keine Client-Daten werden auf dem Server gespeichert. Der Sitzungsstatus wird auf der Client-Seite gespeichert.
- Cache-FĂ€higkeit â Clients können die Antworten des Servers zwischenspeichern, um die Gesamtleistung zu verbessern.
Was ist CRUD?
CRUD ist ein Programmierkonzept, das vier grundlegende Aktionen beschreibt (create, read, update und delete).
In der REST-API sind die Anfragearten und Methoden fĂŒr Aktionen wie POST, GET, PUT und DELETE verantwortlich.
Jetzt, wo wir die grundlegenden Begriffe geklÀrt haben, können wir mit der Erstellung der API beginnen.
Entwicklung
Lass uns ein Repository fĂŒr Zitate ĂŒber KĂŒnstliche Intelligenz erstellen. KI ist eine der am schnellsten wachsenden Technologien heute, und Python ist ein beliebtes Werkzeug fĂŒr die Arbeit mit KI.
Mit dieser API kann der Python-Entwickler schnell Informationen ĂŒber KI abrufen und sich von neuen Errungenschaften inspirieren lassen. Wenn der Entwickler wertvolle Gedanken zu diesem Thema hat, kann er sie im Repository hinzufĂŒgen.
Beginnen wir mit dem Import der notwendigen Module und der Einrichtung von Flask:
from flask import Flask
from flask_restful import Api, Resource, reqparse
import random
app = Flask(__name__)
api = Api(app)In diesem Snippet sind Flask, Api und Resource die Klassen, die wir benötigen.
Reqparse ist das Schnittstellenmodul fĂŒr das Parsen von Anfragen in Flask-RESTful⊠AuĂerdem benötigen wir das Modul random fĂŒr die Anzeige eines zufĂ€lligen Zitats.
Jetzt werden wir ein Repository fĂŒr Zitate ĂŒber KI erstellen.
Jeder Eintrag im Repository wird enthalten:
- eine digitale ID;
- den Namen des Autors des Zitats;
- das Zitat.
Da dies nur ein Beispiel fĂŒr Schulungszwecke ist, werden wir alle EintrĂ€ge in der Python-Liste speichern. In einer echten Anwendung wĂŒrden wir wahrscheinlich stattdessen eine Datenbank verwenden.
ai_quotes = [
{
"id": 0,
"author": "Kevin Kelly",
"quote": "Die GeschÀftsmodelle der nÀchsten 10.000 Startups sind leicht vorherzusagen: " +
"Nehmen Sie X und fĂŒgen Sie KI hinzu."
},
{
"id": 1,
"author": "Stephen Hawking",
"quote": "Die Entwicklung einer voll funktionsfĂ€higen kĂŒnstlichen Intelligenz könnte " +
"das Ende der menschlichen Rasse bedeuten⊠" +
"Sie wĂŒrde autonom starten und sich " +
"in einem stÀndig wachsenden Tempo neu gestalten. " +
"Menschen, die durch langsame biologische Evolution eingeschrÀnkt sind, " +
"könnten nicht konkurrieren und wĂŒrden abgelöst werden."
},
{
"id": 2,
"author": "Claude Shannon",
"quote": "Ich stelle mir eine Zeit vor, in der wir zu Robotern sind wie " +
"Hunde zu Menschen, " +
"und ich unterstĂŒtze die Maschinen."
},
{
"id": 3,
"author": "Elon Musk",
"quote": "Das Tempo des Fortschritts in der kĂŒnstlichen Intelligenz " +
"(ich spreche nicht von eng gefasster KI) " +
"ist unglaublich schnell. Es sei denn, Sie haben direkten " +
"Kontakt mit Gruppen wie Deepmind, " +
"haben Sie keine Vorstellung davon, wie schnell â es wĂ€chst " +
"in einem Tempo, das nahezu exponentiell ist. " +
"Das Risiko, dass etwas ernsthaft GefÀhrliches " +
"passiert, liegt im Zeitrahmen von fĂŒnf Jahren. " +
"Höchstens 10 Jahre."
},
{
"id": 4,
"author": "Geoffrey Hinton",
"quote": "Ich war immer davon ĂŒberzeugt, dass der einzige Weg, " +
"um kĂŒnstliche Intelligenz zum Funktionieren zu bringen, " +
"darin besteht, die Berechnungen Ă€hnlich wie im menschlichen Gehirn durchzufĂŒhren. " +
"Das ist das Ziel, dem ich seit jeher nachgehe. Wir machen Fortschritte, " +
"auch wenn wir noch viel ĂŒber " +
"die tatsĂ€chliche Funktionsweise des Gehirns lernen mĂŒssen."
},
{
"id": 5,
"author": "Pedro Domingos",
"quote": "Die Leute machen sich Sorgen, dass Computer " +
"zu intelligent werden und die Welt ĂŒbernehmen, " +
"aber das wirkliche Problem ist, dass sie zu dumm sind " +
"und die Welt bereits ĂŒbernommen haben."
},
{
"id": 6,
"author": "Alan Turing",
"quote": "Es scheint wahrscheinlich, dass es nicht lange dauern wird, " +
"bis die maschinelle Denkweise " +
"unsere schwachen KrĂ€fte ĂŒbertrifft⊠" +
"Sie wÀren in der Lage, " +
"miteinander zu kommunizieren, um ihre Intelligenz zu schÀrfen. " +
"Daher sollten wir in einem bestimmten Stadium " +
"erwarten, dass die Maschinen die Kontrolle ĂŒbernehmen."
},
{
"id": 7,
"author": "Ray Kurzweil",
"quote": "KĂŒnstliche Intelligenz wird um das Jahr 2029 " +
"menschliche Niveau erreichen. " +
"Wenn man das weiterfĂŒhrt, sagen wir bis 2045, " +
"werden wir die Intelligenz, " +
"die menschliche biologische Maschinenintelligenz " +
"unserer Zivilisation billionenfach multipliziert haben."
},
{
"id": 8,
"author": "Sebastian Thrun",
"quote": "Niemand sagt es so, aber ich denke, " +
"dass kĂŒnstliche Intelligenz " +
"fast wie eine Geisteswissenschaft ist. Es ist wirklich ein Versuch " +
"das menschliche Denken und die menschliche Kognition zu verstehen."
},
{
"id": 9,
"author": "Andrew Ng",
"quote": "Wir ziehen diese Analogie, dass KI die neue ElektrizitÀt ist." +
"ElektrizitÀt hat Industrien transformiert: Landwirtschaft, " +
"Transport, Kommunikation, Fertigung."
}
]Jetzt mĂŒssen wir die Ressourcenklasse Quote erstellen, die die Operationen der Endpunkte unserer API definiert. Innerhalb der Klasse mĂŒssen wir vier Methoden deklarieren: get, post, put, delete.
Fangen wir mit der GET-Methode an.
Diese ermöglicht es, ein bestimmtes Zitat durch Angabe seiner ID oder ein zufÀlliges Zitat abzurufen, wenn keine ID angegeben ist.
class Quote(Resource):
def get(self, id=0):
if id == 0:
return random.choice(ai_quotes), 200
for quote in ai_quotes:
if(quote["id"] == id):
return quote, 200
return "Quote not found", 404Die GET-Methode gibt ein zufĂ€lliges Zitat zurĂŒck, wenn die ID den Standardwert enthĂ€lt, d.h. wenn beim Aufruf der Methode die ID nicht festgelegt wurde.
Wenn sie festgelegt ist, sucht die Methode unter den Zitaten und findet das, das die angegebene ID enthĂ€lt. Wenn nichts gefunden wird, erscheint die Nachricht âQuote not found, 404â.
Denken Sie daran: Die Methode gibt den HTTP-Status 200 bei erfolgreicher Anfrage und 404 zurĂŒck, wenn der Datensatz nicht gefunden wurde.
Jetzt lassen Sie uns die POST-Methode erstellen, um ein neues Zitat im Repository hinzuzufĂŒgen.
Sie wird die ID jedes neuen Zitats beim Eingeben erhalten. DarĂŒber hinaus wird POST reqparse verwenden, um die Parameter zu parsen, die im Anfragekörper enthalten sind (Autor und Text des Zitats).
def post(self, id):
parser = reqparse.RequestParser()
parser.add_argument("author")
parser.add_argument("quote")
params = parser.parse_args()
for quote in ai_quotes:
if(id == quote["id"]):
return f"Zitat mit der ID {id} existiert bereits", 400
quote = {
"id": int(id),
"author": params["author"],
"quote": params["quote"]
}
ai_quotes.append(quote)
return quote, 201Im obigen Code hat die POST-Methode die ID des Zitats ĂŒbernommen. AnschlieĂend wurden mit reqparse der Autor und das Zitat aus der Anfrage abgerufen und in einem Dictionary namens params gespeichert.
Wenn ein Zitat mit der angegebenen ID bereits existiert, gibt die Methode eine entsprechende Nachricht und den Statuscode 400 zurĂŒck.
Wenn ein Zitat mit der angegebenen ID noch nicht erstellt wurde, erstellt die Methode einen neuen Eintrag mit der angegebenen ID und dem Autor sowie weiteren Parametern. Danach wird der Eintrag zur Liste ai_quotes hinzugefĂŒgt und der Eintrag mit dem neuen Zitat zusammen mit dem Statuscode 201 zurĂŒckgegeben.
Nun erstellen wir eine PUT-Methode, um ein bestehendes Zitat im Repository zu Àndern.
def put(self, id):
parser = reqparse.RequestParser()
parser.add_argument("author")
parser.add_argument("quote")
params = parser.parse_args()
for quote in ai_quotes:
if(id == quote["id"]):
quote["author"] = params["author"]
quote["quote"] = params["quote"]
return quote, 200
quote = {
"id": id,
"author": params["author"],
"quote": params["quote"]
}
ai_quotes.append(quote)
return quote, 201Die PUT-Methode, Ă€hnlich dem vorherigen Beispiel, nimmt die ID und den Input und analysiert die Parameter fĂŒr das Zitat mithilfe von reqparse.
Wenn das Zitat mit der angegebenen ID existiert, wird es mit den neuen Parametern aktualisiert und anschlieĂend mit dem Code 200 ausgegeben. Wenn das Zitat mit der angegebenen ID noch nicht vorhanden ist, wird ein neuer Eintrag mit dem Code 201 erstellt.
Lassen Sie uns schlieĂlich eine DELETE-Methode erstellen, um ein Zitat zu löschen, das nicht mehr inspiriert.
def delete(self, id):
global ai_quotes
ai_quotes = [quote for quote in ai_quotes if quote["id"] != id]
return f"Zitat mit ID {id} wurde gelöscht.", 200Diese Methode erhÀlt die ID des Zitats als Eingabe und aktualisiert die Liste ai_quotes unter Verwendung der globalen Liste.
Jetzt, da wir alle Methoden erstellt haben, mĂŒssen wir nur noch die Resource zum API hinzufĂŒgen, den Pfad festlegen und Flask starten.
api.add_resource(Quote, "/ai-quotes", "/ai-quotes/", "/ai-quotes/<int:id>")
if __name__ == '__main__':
app.run(debug=True)Unser REST API-Dienst ist bereit!
Als NĂ€chstes können wir den Code in der Datei app.py speichern und ihn mit folgendem Befehl in der Konsole ausfĂŒhren:
python3 app.pyWenn alles gut lÀuft, erhalten wir etwa Folgendes:
* Debug-Modus: aktiv
* LĂ€uft auf :5000/ (DrĂŒcken Sie CTRL+C zum Beenden)
* Neustart mit stat
* Debugger ist aktiv!
* Debugger-PIN: XXXXXXX
API testen
Nachdem das API erstellt wurde, muss es getestet werden.
Sie können dies mit dem Konsolenprogramm curl oder dem REST-Client Insomnia tun oder indem Sie Ihre API auf RapidAPI veröffentlichen.

Unsere API veröffentlichen
RapidAPI ist der gröĂte Marktplatz der Welt mit ĂŒber 10.000 APIs (und etwa 1 Million Entwicklern).
RapidAPI bietet nicht nur eine einheitliche Schnittstelle fĂŒr die Arbeit mit Drittanbieter-APIs, sondern ermöglicht es auch, Ihre eigene API schnell und problemlos zu veröffentlichen.
Um dies zu erreichen, sie auf einem Server im Internet veröffentlichen. In unserem Fall verwenden wir . Die Arbeit damit sollte keine Schwierigkeiten bereiten, ().
Wie Sie Ihre API auf Heroku veröffentlichen
1. Heroku installieren.
Zuerst mĂŒssen Sie sich registrieren und das Heroku Command Line Interface (CLI) installieren. Dies funktioniert auf Ubuntu 16+.
sudo snap install heroku âclassic
Dann loggen wir uns ein:
heroku login
2. Notwendige Dateien hinzufĂŒgen.
Jetzt mĂŒssen wir die Dateien fĂŒr die Veröffentlichung in den Ordner unserer Anwendung hinzufĂŒgen:
- requirements.txt mit der Liste der erforderlichen Python-Module;
- Procfile, der angibt, welche Befehle zur AusfĂŒhrung der Anwendung ausgefĂŒhrt werden sollen;
- .gitignore â um Dateien auszuschlieĂen, die auf dem Server nicht benötigt werden.
Die Datei requirements.txt wird die folgenden Zeilen enthalten:
- flask
- flask-restful
- gunicorn
Bitte beachten Sie: Wir haben gunicorn (Python WSGI HTTP Server) in die Liste aufgenommen, da unser Anwendung auf dem Server ausgefĂŒhrt werden muss.
Procfile wird enthalten:
web: gunicorn app:app
Inhalt von .gitignore:
*.pyc
__pycache__/Jetzt, wo die Dateien erstellt sind, lassen Sie uns das git-Repo initialisieren und committen:
git init
git add
git commit -m "Erster API-Commit"3. Wir erstellen eine neue Heroku-Anwendung.
heroku createWir senden den master branch an das entfernte Heroku-Repo:
git push heroku masterJetzt können wir starten, indem wir den API-Service mit den folgenden Befehlen öffnen:
heroku ps:scale web=1
heroku open
Die API wird unter folgender Adresse verfĂŒgbar sein: .
Wie Sie Ihre Python-API zum RapidAPI-Marktplatz hinzufĂŒgen
Nachdem der API-Dienst auf Heroku veröffentlicht wurde, können Sie ihn zu RapidAPI hinzufĂŒgen. Hier zu diesem Thema.
1. Wir erstellen ein RapidAPI-Konto.
![]()
Registrieren Sie ein kostenloses Konto â dies kann ĂŒber Facebook, Google oder GitHub erfolgen.

2. Wir fĂŒgen die API zum Dashboard hinzu.

3. Jetzt geben wir allgemeine Informationen ĂŒber unsere API ein.

4. Nach dem Klick auf 'API hinzufĂŒgen' erscheint eine neue Seite, auf der wir Informationen zu unserer API eingeben können.

5. Jetzt können Sie entweder die Endpunkte der API manuell eingeben oder mit OpenAPI.

Jetzt mĂŒssen wir die Endpunkte unserer API auf der Seite "Endpoints" festlegen. In unserem Fall entsprechen die Endpunkte dem CRUD-Konzept (get, post, put, delete).

Als NĂ€chstes erstellen wir den Endpunkt GET AI Quote, der ein zufĂ€lliges Zitat ausgibt (wenn die ID standardmĂ€Ăig ist) oder ein Zitat fĂŒr die angegebene ID.
Um den Endpunkt zu erstellen, klicken Sie auf die SchaltflÀche "Create Endpoint".

Wiederholen Sie diesen Prozess fĂŒr alle anderen API-Endpunkte. Das warâs! GlĂŒckwunsch, Sie haben Ihre API veröffentlicht!
Wenn alles gut lÀuft, sieht die API-Seite ungefÀhr so aus:

Fazit
In diesem Artikel haben wir den Prozess zur Erstellung eines eigenen RESTful API Service in Python untersucht, zusammen mit dem Prozess der Veröffentlichung der API in der Cloud Heroku und deren HinzufĂŒgung zum RapidAPI-Verzeichnis.
Im Testfall wurden jedoch nur die grundlegenden Prinzipien der API-Entwicklung gezeigt â Aspekte wie Sicherheit, Fehlertoleranz und Skalierbarkeit wurden nicht behandelt.
Bei der Entwicklung einer realen API mĂŒssen all diese Aspekte berĂŒcksichtigt werden.
Quelle: habr.com
