Meu primeiro contato com o FastAPI
Tags: fastapi, python, beginners, study
Published: 2022-06-03 16:00:48

> Visitei o [FastAPI](https://fastapi.tiangolo.com/) e aprendi bastante sobre o framework.

Olá pessoal! Como estão ?

Ultimamente eu tenho estudado bastante sobre back-end e principalmente python por conta da faculdade. Meu TCC tem como uma de suas ferramentas o Vue e o FastAPI.

A principio eu iria faze-lo com Django(uma ferramenta também em python que curto muito) mas acabei encontrando esse framework e achei a sua proposta de ser algo simples, prático e escalável muito interessante. Então eu decidi fazer um projeto com ele para entender a ferramenta.

Esse pequeno artigo só irá comentar um pouco da minha primeira impressão com a ferramenta e nada mais.

No final do post vou deixar um link para o projetinho que fiz usando a ferramenta e o seu deploy no heroku.

## Conhecendo um pouco sobre a ferramenta

O FastAPI é uma ferramenta que tem como objetivo facilitar a criação de APIs e entrega isso para o desenvolvedor. Ela é mantida pelo [Tiangolo](https://tiangolo.com/) e é um framework de código aberto, dito isso você pode contribuir com o seu código e colaborar com o desenvolvimento caso curta a ideia!

Para criar uma simples rota você só precisará de 5 linhas de código:

```python
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
```

Quando eu vi isso pela primeira vez minha mente explodiu. Eu não sabia que existia um framework que fosse tão simples e fácil de usar, além de que ele gera automaticamente uma documentação para a API com Swagger ou REDOC, incrível não ?

Uma coisa bem interessante da ferramenta é ser async, ou seja para tarefas que precisam do contato com o banco, ou até mesmo em sistemas de _microservices_ você pode utilizar dessa feature, o que o torna bastante escalável.

De pouco em pouco algumas empresas tem adotado o uso da ferramenta pela curva de aprendizado ser bastante simples.

## Por debaixo do capo

A ferramenta vem com um conjunto de dependências conhecidas por algumas pessoas que ajudam na sua construção.

- Pydantic
- Starlette
- Uvicorn

Esse conjunto de ferramentas já te entregam uma grande performance e a possibilidade de criar Schemas com o pydantic.

Falando nele você pode criar um Schema para o seu modelo e então utilizar o pydantic para criar um endpoint para o seu modelo.

> Como assim um enpoit para o modelo ?

O FastAPI utiliza da arquitetura MODELS, ROUTERS & SCHEMAS.

- MODELS é responsável por criar a sua nova tabela no banco de dados;
- ROUTERS é responsável por gerenciar os seus endpoints, podendo conter ou não um repository;
- SCHEMAS são responsáveis por criar a estrutura de dados para os seus endpoints.

Para saber mais sobre esse tipo de arquitetura você pode visitar o [Bigger Applications - Multiple Files (FastAPI DOCS)](https://fastapi.tiangolo.com/pt/tutorial/bigger-applications/)

> Do meu ponto de vista esse tipo de arquitetura é muito interessante e é uma forma de seguir o padrão de projeto.

## Conclusão

Não sou nenhum expert em construções de API muito menos em python. Mas utilizando essa ferramenta consegui criar um CRUD com autenticação e para mim foi muito interessante. Por conta disso resolvi utilizar esse framework com uma das minhas opções no meu TCC.

Durante os meus estudos criei [essa API](https://github.com/deverebor/fastapi-blog-api) com deploy no Heroku, caso esteja curioso para entender mais sobre [acesse as docs da API](https://api-fastapi-blog.herokuapp.com/docs) do projeto e olha o código!

Deixei alguns TODOs lá como conexão com o postgres e a adesão de testes unitários utilizando o pytest(algo que vou falar no futuro).

Curti bastante a ferramenta vou seguir estudando! Quando tiver mais domínio volto aqui para falar mais sobre ❤️🌹.