O FastAPI é um framework web moderno e de alto desempenho para construir APIs com Python 3.6 ou superior. Baseado nos type hints padrões do Python, o FastAPI oferece uma combinação única de alta performance, facilidade de aprendizado e produtividade.
Por que usar o FastAPI?
- Alta Performance: O FastAPI é otimizado para alta performance, permitindo lidar com um grande volume de requisições de forma eficiente.
- Fácil de Aprender e Codar: Graças à sua sintaxe intuitiva e baseada em type hints, o FastAPI é fácil de aprender e simplifica o processo de desenvolvimento.
- Pronto para Produção: Com suporte para OpenAPI e geração automática de documentação interativa, o FastAPI é adequado para projetos de qualquer tamanho, desde protótipos até aplicativos de produção robustos.
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/