API simples em Flask para gerenciar livros com CRUD completo e banco de dados PostgreSQL.
Este projeto expõe uma API REST para gerenciar livros com os seguintes recursos:
POST /books— criar um livroGET /books— listar todos os livrosGET /books/<id>— buscar um livro por IDPUT /books/<id>— atualizar um livroDELETE /books/<id>— remover um livro
O modelo Book contém os campos:
id(UUID)titleauthordescriptionisFavoriteisReadingisFinished
- Python
- Flask
- Flask SQLAlchemy
- Flask-Migrate
- PostgreSQL
- Docker Compose
Use o docker-compose.yml do projeto para subir o banco:
docker compose up -dO serviço PostgreSQL estará disponível em localhost:5432 com as credenciais:
- usuário:
postgres - senha:
postgres - banco:
book
No diretório do projeto:
python3 -m venv .venv
source .venv/bin/activateInstale as dependências necessárias:
pip install flask flask_sqlalchemy flask_migrate psycopg2-binaryA aplicação já utiliza Flask-Migrate. Para criar as tabelas no banco, rode:
export FLASK_APP=app.py
flask db init # se ainda não existir migrations/
flask db migrate -m "init"
flask db upgradeObservação: se a pasta
migrations/já existir, pule oflask db init.
python app.pyA aplicação será iniciada em http://0.0.0.0:8080.
POST /books
Body JSON:
{
"title": "Nome do livro",
"author": "Autor",
"description": "Descrição do livro"
}GET /books
GET /books/<id>
PUT /books/<id>
Body JSON (qualquer campo opcional):
{
"title": "Novo título",
"author": "Novo autor",
"description": "Nova descrição",
"isFavorite": true,
"isReading": false,
"isFinished": true
}DELETE /books/<id>
- O
app.pyestá configurado para usarpostgresql://postgres:postgres@localhost:5432/book. - Se você rodar o PostgreSQL via Docker Compose, essa configuração funciona porque o container expõe a porta
5432no host. - Caso altere host/porta/usuário, atualize
app.config['SQLALCHEMY_DATABASE_URI']noapp.py.
app.py— aplicação Flask e endpointsdb.py— instância do SQLAlchemymodels/book.py— modeloBookdocker-compose.yml— serviço PostgreSQLmigrations/— arquivos de migração do banco de dados