如何在 FastAPI 中创建自定义 404 页面?

Patricia Arquette
发布: 2024-10-24 03:49:02
原创
267 人浏览过

How to Create a Custom 404 Page in FastAPI?

如何使用 FastAPI 返回自定义 404 未找到页面?

简介

创建 Web 应用程序时,这是必不可少的适当地处理 HTTP 状态代码。您可能遇到的一种常见状态代码是 404 Not Found,这表示无法找到所请求的资源。本文将探讨使用 FastAPI(一种用于构建 Web API 的现代 Python 框架)返回自定义 404 页面的各种方法。

异常处理方法

FastAPI 提供了一种便捷的方法通过其异常处理机制来处理异常。您可以定义自定义处理程序来处理 404 异常并返回自定义响应。

<code class="python">@app.exception_handler(404)
async def not_found_exception_handler(request: Request, exc: HTTPException):
    return RedirectResponse('https://fastapi.tiangolo.com')</code>
登录后复制

或者,您可以使用 FastAPI 类的 exception_handlers 参数来注册全局异常处理程序。

<code class="python">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)</code>
登录后复制

中间件方法

另一种方法是创建一个中间件来拦截 HTTP 响应并检查状态代码。如果状态码为 404,则中间件可以在响应到达客户端之前返回自定义响应。

<code class="python">@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</code>
登录后复制

自定义页面响应

使用上述方法,您可以返回一个简单的重定向响应。但是,您还可以通过定义模板并返回 TemplateResponse 来创建更加自定义的 404 页面。

<code class="python">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)</code>
登录后复制

在 templates 目录中,创建一个 404.html 模板,其中包含自定义 404 页面所需的内容。

结论

通过利用异常处理程序、中间件或自定义页面响应,您可以轻松在 FastAPI 中实现自定义 404 Not Found 页面。这使您能够在找不到所请求的资源时提供更加用户友好的体验,从而增强 Web 应用程序的整体用户体验。

以上是如何在 FastAPI 中创建自定义 404 页面?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板