Redirecionamento HTTP em FastAPI
No FastAPI, o redirecionamento de rotas é realizado utilizando a classe RedirectResponse, que é uma subclasse de Response. Essa classe exige, como parâmetro obrigatório, o endereço de destino para o redirecionamento.
No exemplo a seguir, ao acessar a rota "/old", o cliente será redirecionado para a rota "/new":
import mimetypes
from fastapi import FastAPI
from fastapi.responses import RedirectResponse, PlainTextResponse
app = FastAPI()
@app.get("/old")
def old():
return RedirectResponse("/new")
@app.get("/new")
def new():
return PlainTextResponse("Nova página")Uma alternativa mais direta é especificar a classe de resposta no decorador da rota. Dessa forma, o redirecionamento pode ser definido apenas retornando o endereço de destino:
@app.get("/old", response_class=RedirectResponse)
def old():
return "/new"Além de redirecionar dentro da aplicação, é possível apontar o redirecionamento para URLs absolutas. No exemplo abaixo, a rota "/old" redireciona para um endereço externo:
@app.get("/old")
def old():
return RedirectResponse("https://www.programicio.com/python/fastapi")Personalizando o Código de Status HTTP
Por padrão, o RedirectResponse retorna o código de status HTTP 307, que indica um redirecionamento temporário. Caso seja necessário utilizar outro código, como 301 (redirecionamento permanente) , isso pode ser configurado com o parâmetro status_code:
@app.get("/old")
def old():
return RedirectResponse("/new", status_code=301)Também é possível definir o código de status diretamente no decorador:
@app.get("/old", response_class=RedirectResponse, status_code=301)
def old():
return "/new"Com essas opções, é possível personalizar o redirecionamento de rotas no FastAPI de acordo com as necessidades do projeto.
Documentação oficial: