Criar uma API REST com Flask e integração com PostgreSQL.
Passos
Setup do Backend
# Entre no diretΓ³rio backend
cd backend
# Crie o arquivo requirements.txt
cat > requirements.txt << EOL
flask==2.0.1
flask-sqlalchemy==2.5.1
psycopg2-binary==2.9.1
flask-cors==3.0.10
python-dotenv==0.19.0
EOL
# Instale dependΓͺncias
pip install -r requirements.txt
API REST
# app.py
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
import os
app = Flask(__name__)
CORS(app)
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL')
db = SQLAlchemy(app)
class Task(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
completed = db.Column(db.Boolean, default=False)
@app.route('/tasks', methods=['GET'])
def get_tasks():
tasks = Task.query.all()
return jsonify([{
'id': task.id,
'title': task.title,
'completed': task.completed
} for task in tasks])
@app.route('/tasks', methods=['POST'])
def create_task():
data = request.get_json()
task = Task(title=data['title'])
db.session.add(task)
db.session.commit()
return jsonify({
'id': task.id,
'title': task.title,
'completed': task.completed
}), 201
Exercício 3: Database Integration πΎ
Objetivo
Configurar PostgreSQL e migrations.
Passos
Schema Inicial
-- database/init.sql
CREATE TABLE IF NOT EXISTS task (
id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
completed BOOLEAN DEFAULT FALSE
);
-- Dados iniciais
INSERT INTO task (title) VALUES
('Aprender Docker'),
('Dominar Docker Compose'),
('Implementar CI/CD');