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: