Creazione di API RESTful con Python e Flask

Le API RESTful (Representational State Transfer) sono uno stile architettonico popolare per la progettazione di applicazioni in rete. Utilizzano metodi HTTP standard e sono comunemente impiegate per creare servizi Web scalabili e senza stato. Flask è un framework Web Python leggero, ideale per lo sviluppo di API RESTful grazie alla sua semplicità e flessibilità.

Impostazione dell'ambiente del tuo Flask

Prima di creare un'API RESTful, dovrai configurare il tuo ambiente Flask. Ecco come puoi farlo:

  1. Installa Flask usando pip:
pip install flask

Una volta installato Flask, puoi iniziare a sviluppare la tua API.

Creazione di una semplice API Flask

Creiamo una semplice API RESTful che possa eseguire operazioni CRUD (Create, Read, Update, Delete) di base. Ecco un esempio di base:

from flask import Flask, jsonify, request

app = Flask(__name__)

# Sample data
tasks = [
    {'id': 1, 'title': 'Buy groceries', 'done': False},
    {'id': 2, 'title': 'Walk the dog', 'done': True}
]

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

@app.route('/tasks/', methods=['GET'])
def get_task(task_id):
    task = next((task for task in tasks if task['id'] == task_id), None)
    if task is None:
        return jsonify({'error': 'Task not found'}), 404
    return jsonify({'task': task})

@app.route('/tasks', methods=['POST'])
def create_task():
    new_task = request.get_json()
    tasks.append(new_task)
    return jsonify({'task': new_task}), 201

@app.route('/tasks/', methods=['PUT'])
def update_task(task_id):
    task = next((task for task in tasks if task['id'] == task_id), None)
    if task is None:
        return jsonify({'error': 'Task not found'}), 404
    data = request.get_json()
    task.update(data)
    return jsonify({'task': task})

@app.route('/tasks/', methods=['DELETE'])
def delete_task(task_id):
    global tasks
    tasks = [task for task in tasks if task['id'] != task_id]
    return jsonify({'result': 'Task deleted'})

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

In questo esempio:

  • /tasks (GET) restituisce un elenco di tutte le attività.
  • /tasks/<task_id> (GET) restituisce un'attività specifica tramite il suo ID.
  • /tasks (POST) crea una nuova attività.
  • /tasks/<task_id> (PUT) aggiorna un'attività esistente in base al suo ID.
  • /tasks/<task_id> (ELIMINA) elimina un'attività in base al suo ID.

Test della tua API

Per testare la tua API Flask, puoi usare strumenti come Postman o strumenti da riga di comando come curl. Ad esempio, per testare l'endpoint GET per il recupero delle attività, puoi usare:

curl http://localhost:5000/tasks

Gestione degli errori e delle eccezioni

Una corretta gestione degli errori è fondamentale per API robuste. In Flask, puoi gestire gli errori definendo gestori di errori personalizzati. Ad esempio, puoi gestire errori 404 in questo modo:

@app.errorhandler(404)
def not_found_error(error):
    return jsonify({'error': 'Not found'}), 404

Conclusione

La creazione di API RESTful con Python e Flask consente di creare rapidamente servizi Web scalabili ed efficienti. Seguendo i passaggi descritti in questa guida, è possibile impostare un'API di base, gestire vari metodi HTTP e gestire gli errori in modo efficace. La semplicità di Flask lo rende una scelta eccellente per lo sviluppo di API e, continuando a esplorare le funzionalità di Flask, sarai in grado di creare servizi Web più complessi e ricchi di funzionalità.