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:
- 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.