So es geht weiter mit dem Blog, heute beschäftigen wir uns mit einer Flask Anwendung einer REST API. Ich verwende das selbst, um mit meinem laufenden Python Service zu kommunizieren.
Damit ist es einfach eine API mit Python zu erstellen. Diese wird immer per HTTP angesprochen, kann mit WSGI und Apache auch über SSL laufen. In diesem Test starten wir Flask aber als Service ohne SSL und direkt über einen Port, dieser sollte unterschiedlich zu Port 80, 443 usw. sein. Bitte nur zu Testzwecken Flask so betreiben.
Zuerst ändern wir den Code vom Python Debian Service, diesen haben wir bei https://www.predl.cc/python-debian-service/ erstellt.
Öffnen wir die my_service.py und ändern den Code auf:
from flask import Flask
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def meine_aufgabe_route():
# Hier kannst du zusätzlichen Code für den API-Zugriff schreiben
return 'API-Antwort'
if __name__ == '__main__':
app.run(port=5001)
Damit ist das Service fertig, es kann getestet werden, zuerst stoppen wir das alte Service:
sudo systemctl stop my_service.service
sudo systemctl start my_service.service
Dann sollte folgendes herauskommen:
* Serving Flask app 'test'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI serr instead.
* Running on http://127.0.0.1:5001
Press CTRL+C to quit
Um mit dem Service zu kommunizieren, öffnen wir eine weitere Shell, lassen diese aber geöffnet, sonst beendet sich unsere Flask Anwendung:
sudo wget http://127.0.0.1:5001/api
--2023-06-17 11:50:57-- http://127.0.0.1:5001/api
Connecting to 127.0.0.1:5001... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11 [text/html]
Saving to: ‘api’
100%[===========================================================================================================================================>] 11 --.-K/s in 0s
2023-06-17 11:50:57 (2.43 MB/s) - ‘api’ saved [11/11]
Wget erstellt die api Textdatei, in dieser ist die Antwort enthalten:
sudo nano api
Oder wir lassen uns den Inhalt gleich ausgeben:
sudo wget -q -O- http://127.0.0.1:5001/api
API-Antwort
Getestet unter CentOs 7 und Debian 11
Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.
Happy coding!