Введение
При создании веб-приложений это очень важно для правильной обработки кодов состояния HTTP. Один из распространенных кодов состояния, с которым вы можете столкнуться, — это 404 Not Found, который указывает, что запрошенный ресурс не найден. В этой статье будут рассмотрены различные методы возврата пользовательской страницы 404 с использованием FastAPI, современной платформы Python для создания веб-API.
Подход с обработчиком исключений
FastAPI предоставляет удобный способ для обработки исключений с помощью механизма обработки исключений. Вы можете определить собственный обработчик для обработки исключения 404 и возврата специального ответа.
@app.exception_handler(404)
async def not_found_exception_handler(request: Request, exc: HTTPException):
return RedirectResponse('https://fastapi.tiangolo.com')
В качестве альтернативы вы можете использовать параметрException_handlers класса FastAPI для регистрации глобального обработчика исключений.
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)
Подход промежуточного программного обеспечения
Другой подход заключается в создании промежуточного программного обеспечения, которое перехватывает HTTP-ответы и проверяет код состояния. Если код состояния — 404, промежуточное программное обеспечение может вернуть специальный ответ до того, как ответ достигнет клиента.
@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
Ответ пользовательской страницы
Используя методы, упомянутые выше, вы можете вернуть простой ответ перенаправления. Однако вы также можете создать более персонализированную страницу 404, определив шаблон и вернув 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)
В каталоге шаблонов создайте шаблон 404.html с нужным содержанием для вашей пользовательской страницы 404.
Вывод
Используя обработчики исключений, промежуточное программное обеспечение или настраиваемые ответы страниц, вы можете легко реализовать собственную страницу 404 Not Found в FastAPI. Это позволяет вам обеспечить более удобный интерфейс, когда запрошенный ресурс не может быть найден, улучшая общее удобство использования вашего веб-приложения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3