Construire une API REST avec Flask
Maintenant, construisons une API REST avec Flask en utilisant la base de données SQLite example.db
que nous avons créée précédemment.
Dans le fichier app.py
, ajoutez le code suivant pour importer les modules nécessaires :
from flask import Flask, jsonify, request
import sqlite3
Ajoutez le code suivant pour créer l'application Flask :
## Create the Flask application
app = Flask(__name__)
Maintenant, définissons les points d'accès (endpoints) de notre API REST :
Point d'accès pour récupérer tous les utilisateurs
## Endpoint to retrieve all users
@app.route('/users', methods=['GET'])
def get_users():
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to retrieve all users
cursor.execute('SELECT * FROM users')
users = cursor.fetchall()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return the users as JSON
return jsonify(users)
Dans ce code, nous nous connectons d'abord à la base de données SQLite en utilisant la méthode connect()
. Ensuite, nous créons un objet curseur pour exécuter des instructions SQL en utilisant la méthode cursor()
. Ensuite, nous exécutons la requête SQL pour récupérer tous les utilisateurs de la table "users" en utilisant la méthode execute()
. Enfin, nous fermons le curseur et la connexion à la base de données en utilisant la méthode close()
et nous renvoyons les utilisateurs au format JSON en utilisant la méthode jsonify()
.
Point d'accès pour récupérer un utilisateur spécifique par son ID
## Endpoint to retrieve a specific user by ID
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to retrieve the user by ID
cursor.execute('SELECT * FROM users WHERE id =?', (user_id,))
user = cursor.fetchone()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Check if the user exists
if user:
return jsonify(user)
else:
return jsonify({'message': 'User not found'}), 404
Ce point d'accès est similaire au précédent, sauf qu'il récupère un utilisateur spécifique par son ID au lieu de tous les utilisateurs. Nous utilisons la méthode fetchone()
pour récupérer un seul utilisateur de la table "users".
Point d'accès pour créer un nouvel utilisateur
## Endpoint to create a new user
@app.route('/users', methods=['POST'])
def create_user():
## Get the user data from the request body
data = request.get_json()
name = data['name']
email = data['email']
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to insert a new user
cursor.execute('INSERT INTO users (name, email) VALUES (?,?)', (name, email))
conn.commit()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return a success message
return jsonify({'message': 'User created successfully'})
Ce point d'accès est utilisé pour créer un nouvel utilisateur dans la table "users". Nous utilisons la méthode get_json()
pour obtenir les données de l'utilisateur à partir du corps de la requête. Ensuite, nous utilisons la méthode execute()
pour insérer le nouvel utilisateur dans la table "users".
Point d'accès pour mettre à jour un utilisateur existant
## Endpoint to update an existing user
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
## Get the updated user data from the request body
data = request.get_json()
name = data['name']
email = data['email']
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to update the user
cursor.execute('UPDATE users SET name =?, email =? WHERE id =?', (name, email, user_id))
conn.commit()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return a success message
return jsonify({'message': 'User updated successfully'})
Ce point d'accès est utilisé pour mettre à jour un utilisateur existant dans la table "users". Nous utilisons la méthode get_json()
pour obtenir les données mises à jour de l'utilisateur à partir du corps de la requête. Ensuite, nous utilisons la méthode execute()
pour mettre à jour l'utilisateur dans la table "users".
Point d'accès pour supprimer un utilisateur
## Endpoint to delete a user
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to delete the user
cursor.execute('DELETE FROM users WHERE id =?', (user_id,))
conn.commit()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return a success message
return jsonify({'message': 'User deleted successfully'})
Ce point d'accès est utilisé pour supprimer un utilisateur de la table "users". Nous utilisons la méthode execute()
pour supprimer l'utilisateur de la table "users".
Enfin, ajoutons le code suivant pour exécuter l'application Flask :
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)