LU03b - RESTful Flask

Flask ist ein leichtgewichtiges Web-Framework für Python, das sich besonders gut für die Entwicklung von Webanwendungen und RESTful APIs eignet. Flask-RESTful ist eine Erweiterung des Flask-Frameworks für die einfache Implementierung von RESTful Webservices in Python.

Unterlagen zu Flask im Modul 323

Flask-RESTful erleichtert die Erstellung von REST-APIs durch die Bereitstellung von Tools und Strukturen, um Ressourcen, Routen und andere Funktionen eines RESTful Webservices zu organisieren. Flask-RESTful bietet eine einfache und effektive Möglichkeit, RESTful Webservices in Python zu entwickeln. Es ermöglicht die Strukturierung von Code und bietet Funktionen, um häufige Aufgaben bei der Erstellung von RESTful APIs zu erleichtern.

Flask-RESTful kann mit dem Python-Paketmanager pip installiert werden:

pip3 install flask-restful

Eine Flask-Applikation benötigt ein zentrales Python-Skript, welches die Defintion der Services enthält. Dieses Skript wird häufig app.py genannt.

Weitere Vorgaben zur Struktur des macht Flask nicht. Es empfiehlt sich jedoch ein etabliertes Architekturmuster für seine Applikation zu verwenden. Für meine Projekte verwende ich die MVC-Architektur und das DAO-Pattern.

Beispiel

Ein einfacher Flask-RESTful Webservice kann durch die Erstellung einer Flask-App und der Integration von Flask-RESTful erreicht werden.

app.py
from flask import Flask
from flask_restful import Resource, Api
 
def create_app():
    app = Flask(__name__)
    CORS(app)
    api = Api(app)
 
    api.add_resource(HelloWorld, '/hello')
    return app
 
if __name__ == '__main__':
    app = create_app()
    app.run(debug=True)

In der Funktion create_app wird die Flask-Applikation erstellt. Dieses Beispiel definiert eine Ressource (HelloWorld) und den Pfad (/hello) zu dieser Ressource.

Ressourcen werden durch Klassen repräsentiert, die von der Resource-Klasse von Flask-RESTful erben. Jede Ressource implementiert HTTP-Methoden (GET, POST, PUT, DELETE) als Methoden der Klasse (z.B., get, post, put, delete).

helloworld.py
from flask import make_response
from flask_restful import Resource
 
class HelloWorld(Resource):
    def get(self):
        data = {'hello': 'world'}
        return make_response(
            data, 200
        )

In diesem Beispiel würde eine GET-Anfrage an die URL /hello die get-Methode der HelloWorld-Ressource aufrufen. Diese Methode liefert ein JSON-Objekt und den HTTP-Status 200 als Antwort.

Um die Applikation auszuführen, musst du eine Runtime Configuration hinzufügen:

  1. Menu „Run“ → „Edit Configurations …“
  2. Füge eine neue Konfiguration hinzu mit dem „+“-Symbol.
  3. Wähle „Flask Server“

Die Einstellungen sollten automatisch korrekt sein. Du kannst das Fenster mit [OK] schliessen.


Marcel Suter

Erstellt mit Hilfe von ChatGPT

  • modul/m321/learningunits/lu03/flask.txt
  • Zuletzt geändert: 2024/03/28 14:07
  • von 127.0.0.1