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: