Uma API REST simples construída com FastAPI para gerenciamento de usuários.
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
- 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
- Python 3.12 ou superior
- Poetry
- Clone o repositório:
git clone <url-do-repositorio>
cd fastapi_zero- Instale as dependências:
poetry install- Ative o ambiente virtual:
poetry shellPara executar o servidor de desenvolvimento:
poetry run task runOu diretamente:
fastapi dev fastapi_zero/app.pyO servidor estará disponível em: http://localhost:8000
Após iniciar o servidor, você pode acessar:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Retorna uma mensagem de boas-vindas.
Resposta:
{
  "message": "Olá mundo!"
}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"
}Lista todos os usuários cadastrados.
Resposta:
{
  "users": [
    {
      "id": 1,
      "username": "alice",
      "email": "alice@example.com"
    }
  ]
}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"
}poetry run task testpytest -s -x --cov=fastapi_zero -vvcoverage htmlO projeto utiliza taskipy para gerenciar comandos. Aqui estão os comandos disponíveis:
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_testpoetry shell  # Ativa o ambiente virtual
task lint
task pre_format
task format
task run
task pre_test
task test
task post_test- 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
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.mdpoetry add nome-do-pacotepoetry add --group dev nome-do-pacotepoetry run task lint
poetry run task formatEste projeto está sob a licença MIT.