Python: Implementar a API REST com Flask
Esta documentação faz parte do guia Criação de uma API REST. Consulte o guia completo aqui: Guia passo a passo para construir uma API REST com Flask em Python.
👋 Bem-vindo à documentação da Stackhero!
A Stackhero disponibiliza uma solução Python cloud pronta a usar, concebida para simplificar o seu processo de deployment:
- Implemente a sua aplicação em produção em segundos com um simples
git push.- Utilize o seu próprio domínio, com configuração automática de certificado HTTPS para ligações seguras geridas por si.
- Conte com backups automáticos, atualizações com um clique e preços previsíveis, para que se possa focar no seu código e não na gestão da infraestrutura.
- Beneficie de elevada performance e segurança numa infraestrutura privada e dedicada. O seu ambiente está isolado e protegido.
Poupe tempo e simplifique o seu workflow: pode ter o seu código a funcionar com o alojamento Python cloud da Stackhero em apenas 5 minutos.
Agora está pronto para escrever o código da sua API.
Crie um ficheiro chamado app.py e adicione o seguinte código:
import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request
# Carregar variáveis de ambiente do .env para ambientes que não sejam de produção
if os.environ.get('ENV') != 'production':
load_dotenv()
app = Flask(__name__)
# Dados de exemplo para tarefas
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)
Pode iniciar o servidor com:
python app.py
Com
host='0.0.0.0', a sua API fica acessível via browser quando utiliza o Code-Hero. Aceda ahttp://<XXXXXX>.stackhero-network.com:8080/api/tasks, substituindo<XXXXXX>pelo seu domínio Code-Hero.