소개
웹 애플리케이션을 생성할 때 필수적입니다. HTTP 상태 코드를 적절하게 처리합니다. 발생할 수 있는 일반적인 상태 코드 중 하나는 404 Not Found입니다. 이는 요청한 리소스를 찾을 수 없음을 나타냅니다. 이 기사에서는 웹 API 구축을 위한 최신 Python 프레임워크인 FastAPI를 사용하여 사용자 정의 404 페이지를 반환하는 다양한 방법을 살펴보겠습니다.
예외 처리기 접근 방식
FastAPI는 편리한 방법을 제공합니다. 예외 처리 메커니즘을 통해 예외를 처리합니다. 404 예외를 처리하기 위한 사용자 정의 핸들러를 정의하고 사용자 정의 응답을 반환할 수 있습니다.
@app.exception_handler(404)
async def not_found_exception_handler(request: Request, exc: HTTPException):
return RedirectResponse('https://fastapi.tiangolo.com')
또는 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
사용자 정의 페이지 응답
위에 언급된 방법을 사용하면 간단한 리디렉션 응답을 반환할 수 있습니다. 그러나 템플릿을 정의하고 TemplateResponse를 반환하여 더욱 맞춤화된 404 페이지를 만들 수도 있습니다.
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 페이지에 대해 원하는 콘텐츠가 포함된 404.html 템플릿을 만듭니다.
결론
예외 처리기, 미들웨어 또는 사용자 정의 페이지 활용 응답을 통해 FastAPI에서 사용자 정의 404 Not Found 페이지를 쉽게 구현할 수 있습니다. 이를 통해 요청한 리소스를 찾을 수 없을 때 보다 사용자 친화적인 환경을 제공할 수 있어 웹 애플리케이션의 전반적인 사용자 환경이 향상됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3