webentwicklung-frage-antwort-db.com.de

RESTful-API mit Flask erstellen?

Die Flask-Tutorial-Site here sagt, dass Sie zum Erstellen einer RESTful-API Klassen schreiben, die restful.Resource erweitern, und sie dann der API hinzufügen, indem Sie:

app = Flask(__name__)
api = restful.Api(app)
class HelloWorld(restful.Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

Ich habe mir jedoch schon einige Tutorials angesehen, die alle nur Funktionen mit dem @app.route('/path')-Dekorator verwenden, die ich eher in Flask-Apps sehe. Zum Beispiel hier haben sie:

@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

Und hier :

@app.route('/')
def api_root():
    return 'Welcome'

Was ist der Unterschied zwischen der Verwendung der restful.Resource-Klasse und nur den dekorierten Funktionen, falls vorhanden? Wenn es keine Unterschiede gibt, was kann ich per Konvention tun, um eine RESTful-API zu erstellen? 

14
u3l

Kurze Antwort

restful.Resource stammt aus einer Flask-Restful -Erweiterung, die selbst nicht Flask ist. Das Tutorial von Miguel verwendet Flask , um eine restful-Schnittstelle zu schreiben. 

Lange Antwort:

Neben Flask gibt es zunächst eine Reihe von Flask-Erweiterungen . Obwohl sie zusammenarbeiten, sind sie separate Pakete und werden von einzelnen Autoren geschrieben. Flask-Restful ist eine Erweiterung von Flask.

In Miguels Tutorial wird erläutert, wie Sie mit Flask ein ruhiges API erstellen können. 

Flask-Restful mit dem Ziel, einige von uns vor der Neuerfindung des Rads zu retten, verspricht die Umwandlung einer benutzerdefinierten Klasse (oder einer benutzerdefinierten Python-Datenstruktur) in einen restful-Webdienst. Flask-RESTplus , eine Abzweigung von Flask-Restul, generiert automatisch eine API-Dokumentation mit der Swagger-Benutzeroberfläche.

Darüber hinaus kann Flask auch documented die Verwendung von MethodView verwenden, damit Entwickler ihre eigenen restful-APIs schreiben können. Parallel dazu verspricht Flask-Restless , eine SqlAlchemy-Klasse in einen erholsamen Web-Service zu verwandeln.

Ein Update (18/07/2016), flask-api verwandelt eine Funktion/Ansicht in eine restful-Oberfläche und wird vom selben Autor (Tom Christie) von Django Restful Framework entworfen.

Es gibt viele Wege nach Roma.

35
chfw
#from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

    return "Hello, World!"

if __== '__main__':

    app.run(debug=True)
0
Hasitha Lakshan

Die Verwendung von Methoden anstelle von Klassen kann schnell verwirrend werden, wenn viele Endpunkte benötigt werden. Klassen/Ressourcen sind eine bessere Möglichkeit, Logik zu trennen und zu entkoppeln. Außerdem wird Ihr Code deutlich lesbarer und lässt sich leichter ändern/korrigieren

Die Verwendung von Flask-Restful ist wahrscheinlich der beste Weg, obwohl ich einige Arbeit zu erledigen habe, um den Bauplan für Ihre API zu erstellen, das Routing zu konfigurieren, die Anforderungsparameter zu bearbeiten und viele Dinge, die jede normale API benötigt, was ziemlich ärgerlich wird.

Ich habe dieses leichtgewichtige Gerüst auf der Flasche aufgebaut, das es Ihnen ermöglicht, auf einfache Weise erholsame Apis zu erstellen, ohne sich um die gesamte Verdrahtung kümmern zu müssen. Sie müssen sich nur auf die Definition der API und das Kodieren der Geschäftslogik konzentrieren. Sie können es hier ausprobieren: https://github.com/sebastiandev/Peach

Es ist eher auf NOSQL-Datenbanken ausgerichtet, aber das ist nur, weil der Proxy für die Datenbank, der standardmäßig bereitgestellt wird, für mongodb gilt. Wenn Sie sql benötigen, können Sie einfach einen Proxy für sqlachemy erstellen (oder warten, bis ich Zeit finde, um es aufzubauen).

0
Sebastian