Python: Implementación de la API REST con Flask
Esta documentación forma parte de la guía Creación de una API REST. Consulte la guía completa aquí: Guía paso a paso para construir una API REST con Flask en Python.
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución Python en la nube lista para usar, diseñada para agilizar su proceso de despliegue:
- Despliegue su aplicación en producción en segundos con un simple
git push.- Utilice su propio nombre de dominio, con configuración automática del certificado HTTPS para conexiones seguras gestionadas por nosotros.
- Cuente con copias de seguridad automáticas, actualizaciones con un solo clic y precios predecibles, para que pueda centrarse en su código y no en la gestión de la infraestructura.
- Disfrute de un alto nivel de rendimiento y seguridad en una infraestructura privada y dedicada. Su entorno está aislado y protegido.
Ahorre tiempo y simplifique su flujo de trabajo: puede tener su código funcionando con el hosting Python en la nube de Stackhero en solo 5 minutos.
Ahora está listo para escribir el código de su API.
Cree un archivo llamado app.py y añada este código:
import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request
# Cargar variables de entorno desde .env para entornos que no sean de producción
if os.environ.get('ENV') != 'production':
load_dotenv()
app = Flask(__name__)
# Datos de ejemplo para tareas
tasks = [
{
'id': 1,
'title': 'Buy groceries',
'description': 'Milk, Cheese, Pizza, Fruits',
'done': False
},
{
'id': 2,
'title': 'Learn Python',
'description': 'Learn Python programming basics',
'done': False
}
]
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
@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 not task:
return jsonify({'error': 'Task not found'}), 404
return jsonify({'task': task[0]})
@app.route('/api/tasks', methods=['POST'])
def create_task():
if not request.json or 'title' not in request.json:
return jsonify({'error': 'Title is required'}), 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
if __name__ == '__main__':
if os.environ.get('ENV') == 'production':
app.run()
else:
app.run(host='0.0.0.0', port=8080, debug=True)
Puede iniciar el servidor con:
python app.py
Con
host='0.0.0.0', su API es accesible desde el navegador cuando utiliza Code-Hero. Visitehttp://<XXXXXX>.stackhero-network.com:8080/api/tasks, sustituyendo<XXXXXX>por su dominio de Code-Hero.