Skip to content

Latest commit

 

History

History
258 lines (183 loc) · 4.09 KB

File metadata and controls

258 lines (183 loc) · 4.09 KB

FastAPI Zero

Uma API REST simples construída com FastAPI para gerenciamento de usuários.

📋 Descrição

Este projeto é uma implementação básica de uma API REST usando FastAPI que permite:

  • Criar usuários
  • Listar todos os usuários
  • Atualizar usuários existentes
  • Validação de dados com Pydantic
  • Testes automatizados com pytest

🚀 Tecnologias

  • FastAPI - Framework web moderno para APIs
  • Pydantic - Validação de dados e serialização
  • Poetry - Gerenciamento de dependências
  • pytest - Framework de testes
  • Ruff - Linter e formatação de código

📦 Instalação

Pré-requisitos

  • Python 3.12 ou superior
  • Poetry

Passos para instalação

  1. Clone o repositório:
git clone <url-do-repositorio>
cd fastapi_zero
  1. Instale as dependências:
poetry install
  1. Ative o ambiente virtual:
poetry shell

🏃‍♂️ Como executar

Desenvolvimento

Para executar o servidor de desenvolvimento:

poetry run task run

Ou diretamente:

fastapi dev fastapi_zero/app.py

O servidor estará disponível em: http://localhost:8000

Documentação da API

Após iniciar o servidor, você pode acessar:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

📚 Endpoints da API

GET /

Retorna uma mensagem de boas-vindas.

Resposta:

{
  "message": "Olá mundo!"
}

POST /users/

Cria um novo usuário.

Corpo da requisição:

{
  "username": "alice",
  "email": "alice@example.com",
  "password": "secret"
}

Resposta:

{
  "id": 1,
  "username": "alice",
  "email": "alice@example.com"
}

GET /users/

Lista todos os usuários cadastrados.

Resposta:

{
  "users": [
    {
      "id": 1,
      "username": "alice",
      "email": "alice@example.com"
    }
  ]
}

PUT /users/{user_id}

Atualiza um usuário existente.

Corpo da requisição:

{
  "username": "bob",
  "email": "bob@example.com",
  "password": "secret123"
}

Resposta:

{
  "id": 1,
  "username": "bob",
  "email": "bob@example.com"
}

🧪 Testes

Executar todos os testes

poetry run task test

Executar apenas os testes

pytest -s -x --cov=fastapi_zero -vv

Gerar relatório de cobertura

coverage html

🔧 Comandos disponíveis

O projeto utiliza taskipy para gerenciar comandos. Aqui estão os comandos disponíveis:

Opção 1: Com poetry run (padrão)

poetry run task lint
poetry run task pre_format
poetry run task format
poetry run task run
poetry run task pre_test
poetry run task test
poetry run task post_test

Opção 2: Com poetry shell (recomendado)

poetry shell  # Ativa o ambiente virtual
task lint
task pre_format
task format
task run
task pre_test
task test
task post_test

Comandos disponíveis

  • task lint - Executa o linter (Ruff)
  • task pre_format - Corrige problemas de linting automaticamente
  • task format - Formata o código
  • task run - Executa o servidor de desenvolvimento
  • task pre_test - Executa o linter antes dos testes
  • task test - Executa os testes com cobertura
  • task post_test - Gera relatório HTML de cobertura

📁 Estrutura do projeto

fastapi_zero/
├── fastapi_zero/
│   ├── __init__.py
│   ├── app.py          # Aplicação principal
│   └── schemas.py      # Modelos Pydantic
├── tests/
│   ├── __init__.py
│   ├── conftest.py     # Configuração dos testes
│   └── test_app.py     # Testes da aplicação
├── pyproject.toml      # Configuração do Poetry
└── README.md

👨‍💻 Desenvolvimento

Adicionando novas dependências

poetry add nome-do-pacote

Adicionando dependências de desenvolvimento

poetry add --group dev nome-do-pacote

Verificando qualidade do código

poetry run task lint
poetry run task format

📝 Licença

Este projeto está sob a licença MIT.

👤 Autor

Rubendvb -