Bem-vindo ao repositório de estudos e execução do curso FastAPI do Zero, ministrado por Dunossauro!
O curso está disponível em: https://fastapidozero.dunossauro.com/estavel/
Este repositório contém o código desenvolvido durante as aulas do curso, organizado por branches conforme o progresso das aulas.
- Material: Aula 1 - Configuração do Ambiente
- Status: ✅ COMPLETA
Implementações realizadas:
- ✅ Ambiente de desenvolvimento: Python 3.13, Git configurados
- ✅ Gerenciador de pacotes: UV (moderno substituto do Poetry)
- ✅ Estrutura do projeto: Layout flat com fast_zero/ criado
- ✅ FastAPI: Instalado com
[standard]extras - ✅ Ferramentas de desenvolvimento:
- pytest (testes) e pytest-cov (cobertura)
- ruff (linting e formatação)
- taskipy (automação de tarefas)
- ✅ Configurações:
- Ruff: line-length 79, aspas simples, regras I/F/E/W/PL/PT
- Pytest: pythonpath configurado, warnings suprimidos
- Taskipy: comandos lint, format, run, test com pré/pós hooks
- ✅ Hello World: Endpoint
/implementado e funcionando - ✅ Primeiro teste: Estrutura AAA (Arrange-Act-Assert)
- ✅ Cobertura de testes: 100% alcançada
- ✅ Git: Repositório inicializado com .gitignore
- ✅ Exercícios da aula: Todos implementados
- Material: Aula 2 - Introdução ao Desenvolvimento WEB
- Status: ✅ COMPLETA
Implementações realizadas:
- ✅ Conceitos Web: Cliente-servidor, URLs, HTTP compreendidos
- ✅ Protocolo HTTP:
- Verbos GET/POST/PUT/DELETE implementados
- Status codes com HTTPStatus (boas práticas)
- Cabeçalhos e corpo de mensagens
- ✅ APIs e JSON:
- Endpoint
/retornando JSON - Contratos de dados com schemas
- Endpoint
- ✅ Pydantic integrado:
- Schema
Messagecriado e utilizado response_modelconfigurado nos endpoints
- Schema
- ✅ Documentação OpenAPI:
- Swagger UI disponível em
/docs - ReDoc disponível em
/redoc - Schemas documentados automaticamente
- Swagger UI disponível em
- ✅ Endpoint HTML:
/htmlcom HTMLResponse - ✅ Testes completos:
- Teste do endpoint JSON (
test_root_deve_retornar_ok_e_ola_mundo) - Teste do endpoint HTML (
test_root_html_deve_retornar_ok_e_ola_mundo)
- Teste do endpoint JSON (
- ✅ Exercício da aula: Endpoint HTML implementado e testado
- Material: Aula 3 - Estruturando o Projeto e Criando Rotas CRUD
- Status: ✅ COMPLETA
Implementações realizadas:
- ✅ Sistema CRUD completo:
- POST
/users/para criar usuários - GET
/users/para listar usuários - PUT
/users/{user_id}para atualizar usuários - DELETE
/users/{user_id}para remover usuários - GET
/users/{user_id}para buscar usuário específico
- POST
- ✅ Modelos de dados:
- UserSchema: modelo de entrada
- UserPublic: modelo de saída
- UserDB: modelo do banco
- UserList: modelo para listagem
- ✅ Validações:
- Email com EmailStr
- Campos obrigatórios
- Respostas HTTP adequadas
- ✅ Testes:
- Cobertura 100%
- Fixture de cliente de teste
- Testes de sucesso e erro
- ✅ Exercícios da aula: Todos implementados
- Material: Aula 4 - Banco de Dados e Migrações
- Status: ✅ COMPLETA
Implementações realizadas:
- ✅ SQLAlchemy configurado:
- Modelos com Mapped columns
- Registro de tabelas com registry
- Tipos de dados apropriados
- ✅ Modelo User aprimorado:
- Campos únicos (email, username)
- Campos automáticos (id, created_at, updated_at)
- Configurações de colunas otimizadas
- ✅ Ambiente de banco:
- Settings com pydantic-settings
- Configuração via .env
- URL do banco configurável
- ✅ Alembic configurado:
- Inicialização correta
- Migração inicial criada
- Migração para novos campos
- ✅ Testes do banco:
- Fixture de sessão SQLite em memória
- Mock de tempo para testes determinísticos
- Validação completa de objetos
- ✅ Exercícios da aula: Todos implementados
- Campo updated_at adicionado
- Eventos ORM configurados
- Testes adaptados
- Material: Aula 5 - Integrando Banco de Dados à API
- Status: ✅ COMPLETA
Implementações realizadas:
- ✅ Integração SQLAlchemy-FastAPI:
- Função
get_sessionpara gerenciamento de sessões - Injeção de dependências com
Depends - Configuração thread-safe para testes
- Função
- ✅ Endpoints atualizados:
- POST
/users/com validação de duplicados - GET
/users/com paginação (limit/offset) - PUT
/users/{id}com tratamento de conflitos - DELETE
/users/{id}integrado ao banco - GET
/users/{id}com busca real
- POST
- ✅ Schemas aprimorados:
- Integração Pydantic-SQLAlchemy
- ConfigDict com from_attributes
- Remoção de schemas não utilizados
- ✅ Testes robustos:
- Fixture de sessão SQLite
- Fixture de usuário para testes
- Testes de conflitos e erros
- Cobertura de 98%
- ✅ Exercícios da aula: Todos implementados
- Testes de duplicidade
- Validações de conflitos
- Endpoints atualizados
- Python 3.13+
- UV (gerenciador de pacotes moderno para Python)
-
Clone o repositório:
git clone https://github.com/seu-usuario/seu-repositorio.git cd fast_zero -
Instale as dependências:
uv sync
-
Execute os testes:
uv run pytest -s -x --cov=fast_zero -vv
-
Execute o linting:
uv run ruff check
-
Formate o código:
uv run ruff format
-
Execute a aplicação:
uv run fastapi dev fast_zero/app.py
- Cobertura: 98%
- Total de testes: 15
- Status: ✅ Todos passando
Com a aplicação rodando, acesse:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
- Aula 1-5: Código atual (main branch)
- Para aulas futuras, branches específicas serão criadas
Usando UV (recomendado):
# Instalar dependências
uv sync
# Executar testes
uv run pytest -s -x --cov=fast_zero -vv
# Executar aplicação
uv run fastapi dev fast_zero/app.py
# Linting
uv run ruff check
# Formatação
uv run ruff formatUsando taskipy (alternativo):
# Executar testes
uv run task test
# Executar aplicação
uv run task run
# Linting
uv run task lint
# Formatação
uv run task formatO curso FastAPI do Zero aborda desde a configuração do ambiente até a construção de APIs completas utilizando FastAPI, com explicações detalhadas e exemplos práticos.
Acesse o conteúdo completo em: https://fastapidozero.dunossauro.com/estavel/
Autor do curso: Dunossauro
Repositório mantido por: Fábio Belotto
Sinta-se à vontade para contribuir ou utilizar este material para seus estudos!