Introdução
Ao criar aplicativos da web, é essencial para lidar adequadamente com códigos de status HTTP. Um código de status comum que você pode encontrar é 404 Not Found, que indica que não foi possível encontrar um recurso solicitado. Este artigo explorará vários métodos para retornar uma página 404 personalizada usando FastAPI, uma estrutura Python moderna para construir APIs da web.
Abordagem de manipulador de exceções
FastAPI fornece uma maneira conveniente para lidar com exceções por meio de seu mecanismo de tratamento de exceções. Você pode definir um manipulador personalizado para lidar com a exceção 404 e retornar uma resposta personalizada.
@app.exception_handler(404)
async def not_found_exception_handler(request: Request, exc: HTTPException):
return RedirectResponse('https://fastapi.tiangolo.com')
Como alternativa, você pode usar o parâmetro exception_handlers da classe FastAPI para registrar um manipulador de exceção global.
async def not_found_error(request: Request, exc: HTTPException):
return RedirectResponse('https://fastapi.tiangolo.com')
exception_handlers = {404: not_found_error}
app = FastAPI(exception_handlers=exception_handlers)
Abordagem de middleware
Outra abordagem é criar um middleware que intercepte respostas HTTP e verifique o código de status. Se o código de status for 404, o middleware poderá retornar uma resposta personalizada antes que a resposta chegue ao cliente.
@app.middleware("http")
async def redirect_on_not_found(request: Request, call_next):
response = await call_next(request)
if response.status_code == 404:
return RedirectResponse("https://fastapi.tiangolo.com")
else:
return response
Resposta de página personalizada
Usando os métodos mencionados acima, você pode retornar uma resposta de redirecionamento simples. No entanto, você também pode criar uma página 404 mais personalizada definindo um modelo e retornando um TemplateResponse.
from fastapi.templating import Jinja2Templates
templates = Jinja2Templates(directory='templates')
async def not_found_error(request: Request, exc: HTTPException):
return templates.TemplateResponse('404.html', {'request': request}, status_code=404)
No diretório de modelos, crie um modelo 404.html com o conteúdo desejado para sua página 404 personalizada.
Conclusão
Aproveitando manipuladores de exceções, middleware ou respostas de páginas personalizadas, você pode implemente facilmente uma página 404 Not Found personalizada no FastAPI. Isso permite que você forneça uma experiência mais amigável quando um recurso solicitado não puder ser encontrado, melhorando a experiência geral do usuário em seu aplicativo da web.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3