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 shell
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
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 test
pytest -s -x --cov=fastapi_zero -vv
coverage html
O 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_test
poetry 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 automaticamentetask format
- Formata o códigotask run
- Executa o servidor de desenvolvimentotask pre_test
- Executa o linter antes dos testestask test
- Executa os testes com coberturatask 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.md
poetry add nome-do-pacote
poetry add --group dev nome-do-pacote
poetry run task lint
poetry run task format
Este projeto está sob a licença MIT.