Stage LP DI Madjid Bouchair SERFA, CDS

VOSpace : API Web REST en Python

Encadré par : André Schaaff

Semaine du 1er au 5 mai :

Microframework flask

Pour réalisé l'API REST, j'ai décidé de privilégier le microframework flask http://flask.pocoo.org/ au framework Django qui est plus "complet" mais aussi plus difficilement modulable. flask est une microframework, ce qui veut dire que c'est un framework minimal et extensible à souhait permettant une importante liberté d'action et de modification. Il est distribué sous license BDS. http://flask.pocoo.org/extensions/

Sa mise en place est très simple et il bénéficie d'une communauté active (Stack Overflow, channel irc).

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()
$ pip install Flask
$ python hello.py
 * Running on http://localhost:5000/

flask possède aussi une très bonne documentation composée d'exemples simples et complets ainsi qu'un grand nombre de tutoriaux.

http://flask.pocoo.org/docs/0.12/ http://blog.luisrei.com/articles/flaskrest.html https://www3.ntu.edu.sg/home/ehchua/programming/webprogramming/Python3_Flask.html

Mise en place de la couche REST et test

Après avoir lu la documentation flask et réalisé les tutoriaux de base, j'ai commencé à créer la couche REST du projet. Tout d'abord et dans le but de pouvoir faire des tests sur les différentes facettes de flask, j'ai désigner des url et assigner des méthodes utilisant les arguments de la requête pour faire lancer les méthodes que j'avais codé auparavant.

Mon plus gros soucis a été la gestion des exceptions et leur interprétation avec le bon code d'erreur HTTP (500, 404, 501...)

Grâce à la prise en main rapide de flask et les ressources à disposition, j'ai rapidement pu executer une partie des méthodes "prioritaires" que m'avait communiquer Ibrahim lors de notre échange.

Cependant il reste certaines modifications à réaliser ainsi que créer les endpoint de façon dynamique avec les outils de flask.

logo_cds logo_serfa