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_testtask 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.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.