RESTful Webservice mit Flask-RESTful

In diesem Tutorial beschreibe ich die Installation von Flask, genauer gesagt der Flask-RESTful API, mit der REST-APIs erstellt werden können.

Zunächst aber die Antwort auf die Frage: Was ist Flask-RESTful? Die Internetseite gibt dazu folgende Auskunft:

Flask-RESTful is an extension for Flask that adds support for quickly building REST APIs. It is a lightweight abstraction that works with your existing ORM/libraries. Flask-RESTful encourages best practices with minimal setup. If you are familiar with Flask, Flask-RESTful should be easy to pick up.

Die Installation habe ich auf einem Raspberry2 vorgenommen. Auf anderen Linux-Distributionen sollte es aber ähnlich funktionieren.

Für die Installation benötigt Ihr Python (Version 2.6–3.4), das auf Linux-Systemen bereits vorinstalliert ist. Zusätzlich sollten die Developer-Pakete vorhanden sein:

sudo apt-get install python-dev

Dann kann die Installation von Flask-RESTFul beginnen:

sudo pip install flask-restful

Um später einmal den Zugriff auf den REST-Webservice vor unbefugten Zugriff zu schützen, sollte auch flask-httpauth installiert werden:

sudo pip install flask-httpauth

Hinweis: Sollte pip auf Eurem Linux-System nicht vorhanden sein, kann es mit der Anweisung

sudo apt-get install python-pip

nachinstalliert werden.

Und damit kommen wir zur ersten selbst geschriebenen (Mini-)API (Beispiel von der Internetseite “Flask-RESTful Quickstart”):

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
def get(self):
    return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
app.run(debug=True)

Speichert die Datei unter einem Namen Eurer Wahl ab (hier: api.py) und gebt dann in der Shell

python api.py

ein. Auf dem selben Rechner könnt Ihr Euch dann die Antwort vom Server mit

curl http://127.0.0.1:5000/

ansehen.

Soll von einem anderen Computer auf diese Ressource zugegriffen werden, dann ändert die Zeile

app.run(debug=True)

zu

app.run(host="0.0.0.0",debug=True)

Mehr ist nicht zu tun. Werft einen Blick auf die umfangreiche Dokumentation zu Flask-RESTful und probiert selbst einige der dort gezeigten Beispiele aus.