DY

07 API REST

Nous avons découvert comment requêter une API REST, il est donc temps de découvrir comment en créer une.

Flask-RESTful

Flask-RESTful est une extension pour Flask qui prend en charge la création rapide d’API REST. C'est une abstraction légère qui fonctionne avec les ORM existants.

Installation

Comme toujours ?

pipenv install flask-restful
Démarrage rapide

Il est temps d’écrire notre première API REST.

Une API Flask-RESTful minimale ressemble à ceci:

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, '/')

Vous savez désormais créer une api rest. Pour la tester vous pouvez utiliser l'extension restclient pour firefox par exemple.

Un exemple plus complexe avec notre modèle

Lister l'ensemble des éléments présents en base
from flask_restful import fields, marshal_with

boardgame_fields = {
    'name': fields.String,
    'release_date': fields.String,
    'description': fields.String,
    'slug': fields.String,
}

class BoardgamesAPI(Resource):

    @marshal_with(boardgame_fields)
    def get(self):
        return [d for d in Boardgame.select()]

api.add_resource(BoardgamesAPI, '/api/boardgames/')
Lister un élément
class BoardgameAPI(Resource):
    def get(self, boardgame_slug):
        return Dinosaur.get(boardgame_slug)

api.add_resource(BoardgameAPI, '/api/boardgames/<boardgame_slug>')
Et les CRUD dans tous cela ?

Il va falloir modifier nos classes en ajoutant les méthodes suivantes:

class BoardgameAPI(Resource):

    def delete(self, boardgame_slug):
        pass

    def put(self, boardgame_slug):
        pass


class BoardgameAPI(Resource):

    def post(self):
        pass

En utilisant la documentation de flask-restful pouvez vous implémenter les cruds de l'api Dinosaur ?