Classe FastAPI e Manipulação de Requisições
O núcleo de uma aplicação FastAPI está no uso da classe FastAPI
, disponível no pacote fastapi
. Essa classe representa a aplicação FastAPI e é derivada de starlette.applications.Starlette
. O Starlette é um framework ASGI leve para criação de serviços web assíncronos em Python. O FastAPI atua como uma camada sobre o Starlette, ampliando suas funcionalidades. Isso se aplica não apenas à classe FastAPI
, mas também a diversas outras classes e recursos do framework, que frequentemente utilizam as capacidades do Starlette.
Instanciando a Classe FastAPI
O construtor da classe FastAPI oferece cerca de 30 parâmetros para configurar a aplicação conforme necessidades específicas. No entanto, é possível criar uma instância funcional utilizando apenas os valores padrão:
from fastapi import FastAPI
app = FastAPI()
Essa abordagem é suficiente para configurar e executar uma aplicação básica.
Métodos do FastAPI
Um dos principais atrativos do FastAPI é a facilidade e rapidez com que permite criar serviços web no estilo REST. Na arquitetura REST, diferentes métodos HTTP são utilizados para interagir com o servidor, onde cada método corresponde a uma ação específica:
GET
: Obter dados.POST
: Adicionar dados.PUT
: Atualizar dados.DELETE
: Remover dados.
Além desses, o FastAPI suporta outros métodos HTTP, como:
OPTIONS
: Obter informações sobre a comunicação com o servidor.HEAD
: Obter apenas os cabeçalhos da resposta.PATCH
: Atualizar parcialmente um recurso.TRACE
: Realizar um teste de loopback.
Na classe FastAPI, esses métodos estão disponíveis como funções que levam os mesmos nomes:
get()
post()
put()
delete()
options()
head()
patch()
trace()
Essas funções são usadas para definir rotas que manipulam as requisições correspondentes. Por exemplo, o método get()
é usado para lidar com requisições HTTP do tipo GET.
Uso de Métodos como Decoradores
Essas funções não processam diretamente as requisições, mas são utilizadas como decoradores para funções que realizam o processamento. Veja o exemplo abaixo:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello www.programicio.com!"}
No exemplo acima, o método app.get()
é usado como decorador para a função root()
. O símbolo @
indica que a função está sendo decorada. Esse decorador define que a função root()
será responsável por manipular requisições feitas ao caminho /
(a raiz da aplicação web). Assim, ao acessar o endereço http://127.0.0.1:8000/
, a função será executada.
A função root()
retorna um dicionário Python, que é automaticamente serializado para o formato JSON na resposta ao cliente. Além disso, o cabeçalho HTTP Content-Type
da resposta é configurado como application/json
.
O mesmo conceito pode ser aplicado para definir rotas adicionais na aplicação. Veja o exemplo a seguir:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello www.programicio.com!"}
@app.get("/about")
def about():
return {"message": "Sobre o site"}
Nesse caso, adicionamos uma segunda função chamada about()
, que manipula requisições feitas ao caminho /about
. Ao acessar o endereço http://127.0.0.1:8000/about
, o servidor retornará a seguinte resposta:
Documentação oficial: