Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal

Vues basées sur les classes (MethodView)

Apprendre Flask : Le Guide Ultime
2 min de lecture
Gratuit

Pour une API REST, on a souvent 5 fonctions pour la même URL (get, post, put, delete...). Faire ça avec @app.route devient vite brouillon.

Flask propose les MethodView. On regroupe tout dans une Classe.

from flask.views import MethodView

class UserAPI(MethodView):
    
    def get(self, user_id):
        if user_id is None:
            # logiques pour retourner tous les users
            return "Liste des users"
        else:
            # logique pour retourner un seul user
            return f"User {user_id}"

    def post(self):
        # Créer un user
        return "User créé", 201

    def delete(self, user_id):
        # Supprimer un user
        return "User supprimé", 204

    def put(self, user_id):
        # Modifier
        return "User modifié"

Enregistrement de la route

C'est un peu verbeux, mais ça permet de gérer les URL intelligemment.

user_view = UserAPI.as_view('user_api')

# Route pour /users (GET all, POST)
app.add_url_rule('/users/', defaults={'user_id': None},
                 view_func=user_view, methods=['GET', 'POST'])

# Route pour /users/1 (GET one, PUT, DELETE)
app.add_url_rule('/users/<int:user_id>', view_func=user_view,
                 methods=['GET', 'PUT', 'DELETE'])

C'est la manière "Pythonique" et Orientée Objet de faire des API propres.