Python: Implementazione dell'API REST usando Flask
Questa documentazione fa parte della guida Creazione di un'API REST. Consulta la guida completa qui: Come creare un'API REST usando Flask.
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione cloud Python pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Distribuisci la tua applicazione in pochi secondi con un semplice
git push.- Usa il tuo nome di dominio e beneficia della configurazione automatica dei certificati HTTPS per una sicurezza migliorata.
- Goditi la tranquillità con backup automatici, aggiornamenti con un clic, e una tariffazione semplice, trasparente e prevedibile.
- Ottieni prestazioni ottimali e una sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplificati la vita: ci vogliono solo 5 minuti per provare la soluzione di hosting cloud Python di Stackhero!
Ora, passiamo al codice!
Crea un file chiamato app.py e inserisci il seguente codice:
import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request
# Carica le variabili d'ambiente dal file .env quando non siamo in produzione
if os.environ.get('ENV') != 'production':
load_dotenv()
# Crea l'app Flask
app = Flask(__name__)
# Set di dati di esempio
tasks = [
{
'id': 1,
'title': 'Comprare generi alimentari',
'description': 'Latte, Formaggio, Pizza, Frutta',
'done': False
},
{
'id': 2,
'title': 'Imparare Python',
'description': 'Imparare le basi della programmazione Python',
'done': False
}
]
# Route '/api/tasks' (GET) per elencare tutte le attività
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
# Route '/api/tasks/<task_id>' (GET) per ottenere un'attività specifica tramite 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': 'Attività non trovata'}), 404
return jsonify({'task': task[0]})
# Route '/api/tasks' (POST) per creare una nuova attività
@app.route('/api/tasks', methods=['POST'])
def create_task():
if not request.json or 'title' not in request.json:
return jsonify({'error': 'Il titolo è richiesto'}), 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
# Avvia il server API
if __name__ == '__main__':
if os.environ.get('ENV') == 'production':
app.run()
else:
app.run(host='0.0.0.0', port=8080, debug=True)
Per avviare il server, esegui:
python app.py
Con l'opzione
host='0.0.0.0', puoi anche accedere alla tua API utilizzando il browser quando usi Code-Hero. Basta navigare suhttp://<XXXXXX>.stackhero-network.com:8080/api/tasks, sostituendo<XXXXXX>con il tuo dominio Code-Hero.