Como criar APIs em Python usando FastAPI

Como criar APIs em Python usando FastAPI
Caroline Carvalho
Caroline Carvalho

Compartilhe

Introdução

Se em algum momento você fez uma busca sobre FastAPI, muito provavelmente deve ter visto referências a ele como sendo um framework web para construção de APIs com Python que possui alta performance, de fácil aprendizado, fácil de programar, e pronto para produção, como a própria documentação o descreve, certo? Mas, afinal, o que todas essas características dizem sobre o FastAPI?

Para entender melhor como ele funciona e as vantagens de utilizá-lo, precisamos identificar o objetivo para o qual ele foi desenvolvido, para depois mergulharmos mais a fundo em seu funcionamento, e é isso que iremos fazer agora! Vem comigo!

Banner da Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

A mente por trás da criação

Foto de Sebastián Ramírez.

Sebastián Ramírez / @tiangolo

Fonte:https://fastapi.tiangolo.com

Sebastián Ramírez, criador do FastAPI, trabalha há muitos anos desenvolvendo APIs com requisitos complexos, e como parte deste cenário pôde conhecer e utilizar várias ferramentas em busca de algo que realmente atendesse às necessidades que ele e seu time de desenvolvedores tinham.

Após desbravar inúmeros frameworks e plug-ins sentiu a necessidade de unir todas as funcionalidades que encontrava nestas ferramentas em um único lugar.

Com base em toda essa experiência, criou um framework que foi pensado desde o início para ter uma abordagem moderna, que utilizasse programação assíncrona, que possui type hint, e com as features mais recentes do Python.

Recursos que o vem tornando um dos frameworks queridinhos do momento

Agora, além de ter uma abordagem moderna, o FastAPI tem uma grande lista de funcionalidades, e é justamente essa lista que vem atribuindo tantos adjetivos ao FastAPI. Entre seus principais recursos podemos citar:

  • O uso de OpenAPI para criação de APIs, que é essencial em um mundo cada vez mais conectado, que permite que os sistemas internos de uma organização interajam de forma segura e autenticada com o ambiente externo, estendendo seus sistemas, criando novas funcionalidades e usos que muitas vezes nem a própria organização imaginou.

  • Possui duas opções de documentação automática já incluídas por padrão, sendo elas Swagger UI, para navegar de forma interativa, chamar e testar sua API diretamente do navegador; e documentação navegável e alternativa da API com a biblioteca ReDoc.

  • Utiliza a biblioteca Pydantic para padronizar o código de acordo com a sintaxe do Python 3.6, o que garante validação para todos os tipos de dados Python, e também que estamos sempre trabalhando com as features mais modernas do Python.

  • Como foi projetado desde o ínicio para ser fácil de utilizar, houve também a preocupação em relação ao suporte dos editores mais utilizados pela comunidade, pelo mesmo motivo foi vista a necessidade de garantir as funcionalidades mais utilizadas dentro deles, com isso temos a função autocomplete funcionando em todos os lugares dentro do framework, não é incrível?

  • Há padrões sensíveis para tudo, e tudo pode ser configurado de acordo com as necessidades do usuário.

  • Conta com um sistema de injeção de dependência extremamente fácil de usar, que possui validação automática, suporte para sistemas de autenticação complexos e conexões com banco de dados e tudo isso sem comprometer os bancos de dados.

  • Utiliza type annotations, e tem 100% de cobertura de testes.

Garoto em um quarto de criança com pôsteres na parede e brinquedos ao fundo,  segurando uma longa lista que se desenrola pelo chão.

Ufa! E o mais fantástico é que esta lista não para por aí, e é graças a essa grande quantidade de recursos, sua fácil integração com outros frameworks como Django e Flask, e sua alta performance ao realizar tarefas de grande desempenho que vêm dando a ele popularidade entre os usuários. E até mesmo empresas como Uber e Microsoft já o utilizam para tarefas que envolvem grande volume de dados.

Criando sua primeira API RESTful com FastAPI

Agora vamos colocar a mão na massa? Após criar o projeto na sua IDE, vamos começar:

  • Criando o ambiente virtual, abra o terminal dentro da pasta criada e digite o comando:
python3 -m venv nome_do_ambiente_virtual
  • Instalando no terminal as dependências do FastAPI:
pip install fastapi
  • Instalando o uvicorn, que será utilizado como um servidor para rodar o código:
pip install uvicorn

Após a instalação precisamos criar um arquivo, que neste exemplo será o main.py, e nele iremos:

  • Importar o FastAPI
from fastapi import FastAPI
  • Criar uma instância para a classe FastAPI
app = FastAPI()
  • Definir um decorador de rota, que será responsável por tratar as requisições que vão para a rota “ / ” usando o operador get
@app.get("/")
  • Iremos definir a função da rota
def hello_root():
  • E retornar o conteúdo,
return {"message": "Hello World"}

Visualizando o bloco do código por completo seria assim:

from fastapi import FastAPI

app = FastAPI()

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

Após realizar os passos podemos executar nosso servidor pelo terminal com o comando:

uvicorn main:app --reload
Garoto usando camiseta branca com as mão no rosto e expressão de surpresa,na parte superior a frase “It’s magic” aparece escrita em branco, ao fundo uma espiral verde e azul gira como um círculo de hipnose.

(Tradução livre: “É mágica”)

Pronto! Agora podemos acompanhar a mágica acontecendo quando diretamente do navegador:

  • Acessamos localmente a nossa resposta em formato JSON
Aba do navegador Chrome mostrando o retorno em servidor local com a mensagem {“message”: “Hello World”} no formato JSON.
  • Visualizamos e podemos interagir com a documentação gerada automaticamente pelo Swagger UI
Aba do navegador Chrome com o método GET retornando a documentação interativa gerada automaticamente pelo Swagger UI onde temos o código 200 como retorno de uma aplicação que utilizou formato JSON para ordenar uma lista com strings.
  • Ou também quando acessamos a documentação alternativa automática fornecida pelo ReDoc
Aba do navegador Chrome com o método GET retornando a documentação alternativa gerada automaticamente pelo ReDocI onde temos o código 200 como retorno de uma aplicação no formato JSON.

Conclusão

Viu como realmente há razão no hype em cima do FastAPI? Agora vamos lembrar ponto a ponto o que vimos, desde o começo.

Nesse artigo conhecemos um pouco mais sobre o framework FastAPI. como e porque ele foi criado.

Vimos também algumas de suas funcionalidades mais amadas entre os usuários e como elas funcionam, aquela lista sem fim!

E por fim, aprendemos os primeiros códigos para criar nossa API.

Muito bem!

Agora, se você quiser conhecer mais sobre desenvolvimento web no ecossistema Python não deixe de conferir os nossos cursos Flask: crie uma webapp com Python e Flask parte 2: Avançando no desenvolvimento web, e também as formações Django e Django Rest API.

Bons estudos e até mais! =]

Caroline Carvalho
Caroline Carvalho

Analista de qualidade de software, estudante de Engenharia de Computação e de Análise e Desenvolvimento de Sistemas. Faço parte do Scuba Team, exploradora do universo Python , e também gosto muito de DevOps. Nas horas vagas gosto de falar sobre cultura geek e café.

Veja outros artigos sobre Programação