https://github.com/rafa-kozand/challenge-api_fastapi
API with FastAPI - DIO (https://web.dio.me/play) for 'Python A.I. Backend Developer'
https://github.com/rafa-kozand/challenge-api_fastapi
api dio dio-bootcamp fastapi ia python
Last synced: 7 months ago
JSON representation
API with FastAPI - DIO (https://web.dio.me/play) for 'Python A.I. Backend Developer'
- Host: GitHub
- URL: https://github.com/rafa-kozand/challenge-api_fastapi
- Owner: Rafa-KozAnd
- Created: 2024-05-04T01:24:38.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-08T00:29:59.000Z (over 1 year ago)
- Last Synced: 2025-01-10T20:17:08.489Z (9 months ago)
- Topics: api, dio, dio-bootcamp, fastapi, ia, python
- Language: Python
- Homepage:
- Size: 113 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![]()
![]()
![]()
![]()
![]()
![]()
# Challenge-API_FastAPI
API with FastAPI - DIO (https://web.dio.me/play) for 'Python A.I. Backend Developer'## FastAPI
### Quem é o FastAPi?
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.### Async
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## Projeto
### WorkoutAPIEsta é 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.
### Modelagem de entidade e relacionamento - MER
### Stack da API
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`.
### Execução da API
Para executar o projeto, utilizei a [pyenv](https://github.com/pyenv/pyenv), com a versão 3.11.4 do `python` para o ambiente virtual.
Caso opte por usar pyenv, após instalar, execute:
```bash
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](https://docs.docker.com/compose/install/linux/) instalado, faça a instalação e logo em seguida, execute:```bash
make run-docker
```
Para criar uma migration nova, execute:```bash
make create-migrations d="nome_da_migration"
```Para criar o banco de dados, execute:
```bash
make run-migrations
```### API
Para subir a API, execute:
```bash
make run
```
e acesse: http://127.0.0.1:8000/docs## Desafio Final
- 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
## ReferênciasFastAPI: 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/