Python: Implémentation de l'API REST avec Flask
Cette documentation fait partie du guide Création d'une API REST. Consultez le guide complet ici : Comment créer une API REST avec Flask.
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution cloud Python prête à l'emploi offrant de nombreux avantages, notamment :
- Déployez votre application en quelques secondes avec un simple
git push.- Utilisez votre propre nom de domaine et bénéficiez de la configuration automatique des certificats HTTPS pour une sécurité renforcée.
- Profitez de la tranquillité d'esprit avec des sauvegardes automatiques, des mises à jour en un clic, et une tarification simple, transparente et prévisible.
- Obtenez des performances optimales et une sécurité robuste grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il ne faut que 5 minutes pour essayer la solution d'hébergement cloud Python de Stackhero !
Passons maintenant au code !
Créez un fichier nommé app.py et insérez le code suivant :
import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request
# Charger les variables d'environnement depuis le fichier .env lorsque nous ne sommes pas en production
if os.environ.get('ENV') != 'production':
load_dotenv()
# Créer l'application Flask
app = Flask(__name__)
# Jeu de données d'exemple
tasks = [
{
'id': 1,
'title': 'Acheter des courses',
'description': 'Lait, Fromage, Pizza, Fruits',
'done': False
},
{
'id': 2,
'title': 'Apprendre Python',
'description': 'Apprendre les bases de la programmation Python',
'done': False
}
]
# Route '/api/tasks' (GET) pour lister toutes les tâches
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
# Route '/api/tasks/<task_id>' (GET) pour obtenir une tâche spécifique par son ID
@app.route('/api/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
task = [task for task in tasks if task['id'] == task_id]
if len(task) == 0:
return jsonify({'error': 'Tâche non trouvée'}), 404
return jsonify({'task': task[0]})
# Route '/api/tasks' (POST) pour créer une nouvelle tâche
@app.route('/api/tasks', methods=['POST'])
def create_task():
if not request.json or 'title' not in request.json:
return jsonify({'error': 'Le titre est requis'}), 400
task = {
'id': tasks[-1]['id'] + 1,
'title': request.json['title'],
'description': request.json.get('description', ""),
'done': False
}
tasks.append(task)
return jsonify({'task': task}), 201
# Démarrer le serveur API
if __name__ == '__main__':
if os.environ.get('ENV') == 'production':
app.run()
else:
app.run(host='0.0.0.0', port=8080, debug=True)
Pour démarrer le serveur, exécutez :
python app.py
Avec l'option
host='0.0.0.0', vous pouvez également accéder à votre API en utilisant votre navigateur lorsque vous utilisez Code-Hero. Il suffit de naviguer vershttp://<XXXXXX>.stackhero-network.com:8080/api/tasks, en remplaçant<XXXXXX>par votre domaine Code-Hero.