Esse repositório tem por objetivo guardar um exemplo de API Rest com Flask, SQLAlchemy e outros detalhes, como organização de código, melhor desenho e divisão de responsabilidades.
O objetivo deste projeto é estudar arquitetura de APIs, separando responsabilidades em camadas como:
- routes
- services
- repositories
- models
- schemas
A API permite registrar e gerenciar projetos de estudo, como por exemplo:
- projeto estudo API
- projeto certificação
- projeto leitura de livro
- Python
- Flask
- Flask-OpenAPI3
- SQLAlchemy
- SQLite
- Logging padrão do Python
A API segue o padrão de separação em camadas:
CLIENT -> ROUTES -> SERVICES -> REPOSITORIES -> DATABASE
Responsável pelos endpoints da API.
Contém a lógica da aplicação.
Responsável pela comunicação com o banco de dados.
Define as tabelas do banco usando SQLAlchemy ORM.
Define os formatos de entrada e saída da API.
Configuração da conexão com o banco SQLite.
Configuração do sistema de logs da aplicação.
Clone o repositório:
git clone https://github.com/seu-usuario/flask-sqlalchemy-example-api.git
Entre na pasta do projeto:
cd flask-sqlalchemy-example-api
Crie o ambiente virtual:
python -m venv venv
Ative o ambiente virtual:
-
Windows
- venv\Scripts\activate
-
Linux / Mac
- source venv/bin/activate
Instale as dependências:
pip install -r requirements.txt
Execute o arquivo principal:
python app.py
A API será iniciada em:
A documentação OpenAPI estará disponível em:
- Criar projeto
-
POST /projeto
-
Exemplo de body:
-
{
"nome_projeto": "Estudo API Flask",
"descricao": "Projeto para aprender arquitetura de APIs"
}-
Listar projetos
- GET /projetos
-
Buscar projeto por ID
- GET /projeto/{id}
-
Deletar projeto
- DELETE /projeto/{id}
Os logs da aplicação são registrados em:
api_debug.log
Eles também são exibidos no terminal durante a execução da API.
O banco utilizado é SQLite, armazenado no arquivo:
data.db
Este projeto foi criado com fins de estudo de desenvolvimento backend, focando em:
- organização de código
- arquitetura de APIs
- separação de responsabilidades
- uso de ORM com SQLAlchemy
- documentação automática com OpenAPI
- Implementar endpoint de atualização (PUT)
- Paginação na listagem de projetos
- Testes automatizados
- Autenticação
- Dockerização da aplicação