Bootcamp
Desafio de Projeto
Promovido por: Vivo
Plataforma: http://dio.me
Instrutora: Nayanna Nara
Status: Em andamento
SUMÁRIO:
- Repositório Oficial do LAB
- Desafio
- Sobre a resolução dos desafios
- 💻Recursos utilizados
- Comandos úteis
- Milestones ⭐
- Referências
Repositório: https://github.com/digitalinnovationone/workout_api
** Aguardando a conclusão da issue de ID para iniciar.***
[✔] Adicionar query parameters nos endpoints
- atleta
- nome
- cpf
[✔] Customizar response de retorno de endpoints
- get all
- atleta
- nome
- centro_treinamento
- categoria
[X] Manipular exceção de integridade dos dados em cada módulo/tabela
- sqlalchemy.exc.IntegrityError e devolver a seguinte mensagem: “Já existe um atleta cadastrado com o cpf: x”
- status_code: 303
[X] Adicionar paginação utilizando a lib: fastapi-pagination
- limit e offset
Para testar:
0 - É preciso que o banco de dados esteja criado.
1 - Inicie o container Docker. Você pode usar o play do Docker Desktop.
2 - Suba o servidor uvicorn digitando make run
no terminal.
3 - Acesse o cliente de sua preferência (Postman, Thunder Client, Insominia etc.) >>
Link da documentação: https://fastapi.tiangolo.com/pt/tutorial/query-params/
Crie uma requisição do tipo get e cole a url a seguir na barra de endereços:
http://127.0.0.1:8000/atletas
4 - Ainda na request procure por Query Parameters a adicione os parâmetros nome
e cpf
com os respectivos valores que deseja filtrar. Lembre-se de escrever os dados buscados exatamente como estão no banco de dados. Caso contrário, não serão retornados. Eu usei o Thunder Client dentro do VS Code para fazer a request.
5 - Caso você queira retornar todos os atletas, basta não informar os query parameters ou desmarcá-los caso já tenha informado.
Criei um novo end-point chamado atleta_info para representar a solução. Ele retorna apenas o nome do atleta, o nome da categoria e o nome do centro de treinamento conforme descrito.
Python 3.12.3 e ambiente virtual Venv.
FastAPI(async): framework moderno, rápido de alto desempenho, fácil de aprender, rápido de codar e pronto para produção voltado para construir APIs com Python.
uvicorn: Uvicorn é uma implementação de servidor web ASGI para Python. A especificação ASGI preenche essa lacuna e significa que agora podemos começar a construir um conjunto comum de ferramentas utilizáveis em todas as estruturas assíncronas.Documentação: https://www.uvicorn.org/
alembic: Alembic é uma ferramenta de migração de banco de dados escrita pelo autor de SQLAlchemy . Uma ferramenta de migração oferece as seguintes funcionalidades. Documentação: https://alembic.sqlalchemy.org/en/latest/
SQLAlchemy: SQLAlchemy é o kit de ferramentas Python SQL e mapeador relacional de objetos que oferece aos desenvolvedores de aplicativos todo o poder e flexibilidade do SQL. SQLAlchemy fornece um conjunto completo de padrões de persistência de nível empresarial bem conhecidos, projetados para acesso eficiente e de alto desempenho ao banco de dados, adaptados em uma linguagem de domínio simples e Pythonica. Documentação: https://www.sqlalchemy.org/
pydantic: Validação de dados usando dicas de tipo Python. Artigo de referência: Pydantic: Simplifying Data Validation in Python
PostgresSQL: PostgreSQL é um poderoso sistema de banco de dados relacional de objeto de código aberto com mais de 35 anos de desenvolvimento ativo que lhe rendeu uma forte reputação de confiabilidade, robustez de recursos e desempenho.
Docker: Docker é uma plataforma de software que permite criar, implantar e gerenciar aplicações em contêineres. Um contêiner é uma unidade leve, portátil e autosuficiente que inclui tudo o que a aplicação precisa para rodar: código, runtime, bibliotecas e dependências do sistema. Ele permite o isolamento da aplicação, é portável, escalável e permite a integração com sistemas CI/CD para automatizar o desenvolvimento.
teste
Adicionar o pyenv ao projeto:
pyenv local 3.12.4
Criação do ambiente virtual:
py -m venv .venv
Ativação do ambiente virtual:
.venv\Scripts\activate
Desativação do ambiente virtual:
deactivate
pip install fastapi uvicorn sqlalchemy pydantic
pip install fastapi
pip install uvicorn
pip install sqlalchemy
Já está incluído no FastAPI.
pip install pydantic
pip install pydantic-settings
pip install poetry
py -m pip install --upgrade pip
pip freeze > requirements.txt
docker-compose up -d
make create-migrations d="init_db"
pip install alembic
alembic init alembic
sqlalchemy.url = driver+asyncpg://user:senha@localhost/nome_db
- No Alembic.ini as funções devem ser trabalhadas para se tornarem assícronas, já que por padrão são síncronas.
pip install asyncpg
Se a migration der certo vai ser gerado um arquivo que será armazenado na pasta alembic.
alembic revision --autogenerate -m d="init-db"
1 - Container rodando no Docker
2 - Tabelas no banco via migration
SQLAlchemy 2.0. Table Configuration with Declarative.Disponível em: https://docs.sqlalchemy.org/en/20/orm/declarative_tables.html. Acesso em: 30/06/2024
Dharmkar, Rajendra.How to set python environment variable PYTHONPATH on Windows?.Disponível em: https://www.tutorialspoint.com/How-to-set-python-environment-variable-PYTHONPATH-on-Windows.Acesso em: 30-06-2024.
AELMBIC DOCS. Tutorial. Disponível em: https://alembic.sqlalchemy.org/en/latest/tutorial.html. Acesso em: 01-07-2024
MICROSOFT. Makefile Tools VSCode extension. Disponível em: https://www.youtube.com/watch?v=zbi6WsscXuI. Acesso em: 01-07-2024
REID, Julia. Now announcing: Makefile support in Visual Studio Code!. Disponível em: https://devblogs.microsoft.com/cppblog/now-announcing-makefile-support-in-visual-studio-code/. Acesso em: 01-07-2024.