Framework FastAPI, alta performance, fácil de aprender, fácil de codar, pronto para produção. FastAPI é um moderno e rápido (alta performance) framework web para construção de APIs com Python 3.6 ou superior, baseado nos type hints padrões do Python.
Código assíncrono apenas significa que a linguagem tem um jeito de dizer para o computador / programa que em certo ponto, ele terá que esperar por algo para finalizar em outro lugar
Esta é uma API de competição de crossfit chamada WorkoutAPI (isso mesmo rs, eu acabei unificando duas coisas que gosto: codar e treinar). É uma API pequena, devido a ser um projeto mais hands-on e simplificado nós desenvolveremos uma API de poucas tabelas, mas com o necessário para você aprender como utilizar o FastAPI.
A API foi desenvolvida utilizando o fastapi
(async), junto das seguintes libs: alembic
, SQLAlchemy
, pydantic
. Para salvar os dados está sendo utilizando o postgres
, por meio do docker
.
Para executar o projeto, utilizei a pyenv, com a versão 3.11.4 do python
para o ambiente virtual.
Caso opte por usar pyenv, após instalar, execute:
pyenv virtualenv 3.11.4 workoutapi
pyenv activate workoutapi
pip install -r requirements.txt
Para subir o banco de dados, caso não tenha o docker-compose instalado, faça a instalação e logo em seguida, execute:
make run-docker
Para criar uma migration nova, execute:
make create-migrations d="nome_da_migration"
Para criar o banco de dados, execute:
make run-migrations
Para subir a API, execute:
make run
e acesse: http://127.0.0.1:8000/docs
- adicionar query parameters nos endpoints
- atleta
- nome
- cpf
- customizar response de retorno de endpoints
- get all
- atleta
- nome
- centro_treinamento
- categoria
- 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
- Adicionar paginação utilizando a lib: fastapi-pagination
- limit e offset
FastAPI: https://fastapi.tiangolo.com/
Pydantic: https://docs.pydantic.dev/latest/
SQLAlchemy: https://docs.sqlalchemy.org/en/20/
Alembic: https://alembic.sqlalchemy.org/en/latest/
Fastapi-pagination: https://uriyyo-fastapi-pagination.netlify.app/