créer une api rest avec python et flask
5/5 - (3 votes)

Les API REST sont essentielles pour construire des applications interactives modernes. Dans ce tutoriel, nous allons créer une API REST simple avec Flask, un micro-framework Python facile à utiliser. On va partir du principe que tu as déjà les bases en Python.

 

Prérequis

Assure-toi d’avoir installé Python et pip, l’installateur de paquets Python, sur ton système. Nous aurons également besoin du module Flask. Tu peux l’installer avec pip :

pip install flask

 

Étape 1 : Création de l’application Flask

Crée un nouveau fichier Python (par exemple, app.py) et ajoute le code suivant pour configurer une application Flask de base :

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Bienvenue dans notre API !"

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

 

Étape 2 : Création de routes pour l’API

Maintenant, ajoutons quelques routes pour notre API. Pour cet exemple, supposons que nous créons une API pour une application de gestion de tâches. Nous aurons besoin de routes pour créer, récupérer, mettre à jour et supprimer des tâches.

from flask import Flask, jsonify, request

app = Flask(__name__)

tasks = [
    {"id": 1, "title": "Faire les courses", "completed": False},
    {"id": 2, "title": "Aller à la gym", "completed": False},
]

@app.route('/tasks', methods=['GET'])
def get_tasks():
    return jsonify(tasks)

@app.route('/tasks', methods=['POST'])
def add_task():
    new_task = request.json
    tasks.append(new_task)
    return jsonify(new_task), 201

@app.route('/tasks/<int:task_id>', methods=['PUT'])
def update_task(task_id):
    task = next((t for t in tasks if t['id'] == task_id), None)

    if task is None:
        return "Task not found", 404

    updated_task = request.json
    task.update(updated_task)
    return jsonify(task)

@app.route('/tasks/<int:task_id>', methods=['DELETE'])
def delete_task(task_id):
    global tasks
    tasks = [t for t in tasks if t['id'] != task_id]
    return '', 204

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

 

Étape 3 : Ajout d’une validation des données

Dans l’état actuel, notre API accepte n’importe quelle donnée envoyée via une requête POST ou PUT, ce qui n’est pas idéal. Utilisons le module Flask request pour ajouter une validation de base.

Ajoute d’abord l’importation suivante au début de ton fichier :

from flask import abort

Ensuite, modifie les méthodes add_task() et update_task() comme suit :

@app.route('/tasks', methods=['POST'])
def add_task():
    if not request.json or not 'title' in request.json:
        abort(400)
    new_task = request.json
    tasks.append(new_task)
    return jsonify(new_task), 201

@app.route('/tasks/<int:task_id>', methods=['PUT'])
def update_task(task_id):
    task = next((t for t in tasks if t['id'] == task_id), None)

    if task is None or not request.json:
        abort(404)
    updated_task = request.json
    task.update(updated_task)
    return jsonify(task)

 

Étape 4 : Ajout d’un support de pagination

Pour les API avec un grand nombre d’objets, il est courant de mettre en œuvre la pagination pour améliorer la performance. Ajoutez le support de pagination à notre méthode get_tasks() :

@app.route('/tasks', methods=['GET'])
def get_tasks():
    page = request.args.get('page', 1, type=int)
    per_page = request.args.get('per_page', 10, type=int)
    start = (page - 1) * per_page
    end = start + per_page
    return jsonify(tasks[start:end])

Avec ces modifications, les utilisateurs de ton API peuvent maintenant faire une requête GET à /tasks?page=2&per_page=20 pour obtenir la deuxième page de 20 tâches.

 

Étape 5 : Ajout d’un support CORS

Les requêtes entre domaines (CORS) sont bloquées par défaut pour des raisons de sécurité. Si tu veux que ton API soit accessible à d’autres domaines, tu devras ajouter un support CORS.

Pour ce faire, installe d’abord le module flask-cors :

pip install -U flask-cors

Ensuite, importe-le et initialise-le dans ton application :

from flask_cors import CORS

app = Flask(__name__)
CORS(app)

Et voilà, tu as créé une API REST de base avec Flask. Tu peux maintenant l’adapter à tes propres besoins et l’étendre avec d’autres fonctionnalités, comme la persistance des données avec une base de données ou l’authentification des utilisateurs.

L’API REST est un outil fondamental pour la création d’applications web modernes, permettant à différentes technologies de communiquer entre elles de manière efficace et cohérente. Avec Python et Flask, la création d’une API REST est à la portée de tous, même des débutants.