DEV Community

Cover image for Meu primeiro contato com o FastAPI
Lucas Souza
Lucas Souza

Posted on

Meu primeiro contato com o FastAPI

Visitei o FastAPI 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 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:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
Enter fullscreen mode Exit fullscreen mode

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)

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 com deploy no Heroku, caso esteja curioso para entender mais sobre acesse as docs da API 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 ❤️🌹.

Discussion (0)