Creación de API RESTful con Python y Flask

Las API RESTful (Representational State Transfer) son un estilo arquitectónico popular para diseñar aplicaciones en red. Utilizan métodos HTTP estándar y se emplean comúnmente para crear servicios web escalables y sin estado. Flask es un marco web Python liviano que es ideal para desarrollar API RESTful debido a su simplicidad y flexibilidad.

Configuración del entorno de Flask

Antes de crear una API RESTful, deberá configurar su entorno Flask. A continuación, le indicamos cómo hacerlo:

  1. Instalar Flask usando pip:
pip install flask

Una vez instalado Flask, puedes comenzar a desarrollar tu API.

Creación de una API de Flask sencilla

Vamos a crear una API RESTful sencilla que pueda realizar operaciones CRUD básicas (crear, leer, actualizar, eliminar). A continuación, se muestra un ejemplo básico:

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)

En este ejemplo:

  • /tasks (GET) devuelve una lista de todas las tareas.
  • /tasks/<task_id> (GET) devuelve una tarea específica por su ID.
  • /tasks (POST) crea una nueva tarea.
  • /tasks/<task_id> (PUT) actualiza una tarea existente por su ID.
  • /tasks/<task_id> (ELIMINAR) elimina una tarea por su ID.

Probando su API

Para probar la API de Flask, puede utilizar herramientas como Postman o herramientas de línea de comandos como curl. Por ejemplo, para probar el punto final GET para recuperar tareas, puede utilizar:

curl http://localhost:5000/tasks

Manejo de errores y excepciones

El manejo adecuado de errores es crucial para que las API sean robustas. En Flask, puedes manejar errores definiendo controladores de errores personalizados. Por ejemplo, puedes manejar errores 404 como este:

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

Conclusión

La creación de API RESTful con Python y Flask le permite crear servicios web escalables y eficientes rápidamente. Si sigue los pasos que se describen en esta guía, podrá configurar una API básica, manejar varios métodos HTTP y administrar errores de manera eficaz. La simplicidad de Flask lo convierte en una excelente opción para desarrollar API y, a medida que continúe explorando las características de Flask, podrá crear servicios web más complejos y con más funciones.