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 su http://<XXXXXX>.stackhero-network.com:8080/api/tasks, sostituendo <XXXXXX> con il tuo dominio Code-Hero.