Skip to content

Latest commit

 

History

History
158 lines (94 loc) · 2.72 KB

File metadata and controls

158 lines (94 loc) · 2.72 KB

Flask SQLAlchemy Example API

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

Tecnologias utilizadas

  • Python
  • Flask
  • Flask-OpenAPI3
  • SQLAlchemy
  • SQLite
  • Logging padrão do Python

Arquitetura

A API segue o padrão de separação em camadas:

CLIENT -> ROUTES -> SERVICES -> REPOSITORIES -> DATABASE

routes

Responsável pelos endpoints da API.

services

Contém a lógica da aplicação.

repositories

Responsável pela comunicação com o banco de dados.

models

Define as tabelas do banco usando SQLAlchemy ORM.

schemas

Define os formatos de entrada e saída da API.

database

Configuração da conexão com o banco SQLite.

logger

Configuração do sistema de logs da aplicação.

Instalaçã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

Executando a API

Execute o arquivo principal:

python app.py

A API será iniciada em:

http://127.0.0.1:5000/

Documentação da API

A documentação OpenAPI estará disponível em:

http://127.0.0.1:5000/openapi

Endpoints

  • 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}

Logs

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.

Banco de dados

O banco utilizado é SQLite, armazenado no arquivo:

data.db

Objetivo do projeto

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

Melhorias futuras

  • Implementar endpoint de atualização (PUT)
  • Paginação na listagem de projetos
  • Testes automatizados
  • Autenticação
  • Dockerização da aplicação