FastAPI에서 오류 처리 및 사용자 정의 예외를 구현하는 방법
소개:
FastAPI는 Python을 기반으로 하는 최신 웹 프레임워크로, 고성능과 빠른 개발 기능으로 인해 개발 분야에서 인기가 높아지고 있습니다. 실제 애플리케이션에서는 오류와 예외가 자주 발생합니다. 이 기사에서는 개발자가 애플리케이션의 오류 상황을 더 잘 처리하고 관리할 수 있도록 FastAPI에서 오류 처리 및 사용자 정의 예외를 구현하는 방법을 소개합니다.
FastAPI 오류 처리:
FastAPI는 예외 처리기 또는 데코레이터를 사용하여 애플리케이션의 오류를 캡처하고 처리할 수 있는 내장된 예외 처리 메커니즘을 제공합니다. 다음은 기본 오류 처리 예입니다.
from fastapi import FastAPI app = FastAPI() @app.exception_handler(Exception) async def validation_exception_handler(request, exc): return JSONResponse(status_code=400, content={"message": "Bad request"}) @app.get("/users/{user_id}") async def read_user(user_id: int): if user_id <= 0: raise Exception("Invalid user id") return {"user_id": user_id}
위 예에서는 @app.Exception_handler
데코레이터를 사용하여 전역 예외 처리기를 정의합니다. 두 개의 매개변수를 받습니다. 첫 번째 매개변수는 처리할 예외 유형이고 두 번째 매개변수는 예외를 처리하는 데 사용되는 콜백 함수입니다. 이 예에서는 모든 Exception
예외를 포착하고 사용자 정의 오류 메시지와 함께 JSONResponse
를 반환합니다. @app.exception_handler
装饰器来定义了一个全局的异常处理器。它接受两个参数,第一个参数是要处理的异常类型,第二个参数是一个回调函数,用于处理异常。在这个例子中,我们捕获了所有的Exception
异常,并返回一个带有自定义错误消息的JSONResponse
。
当我们访问/users/{user_id}
这个路由时,如果传入的user_id
小于等于0,将会抛出一个自定义的异常。通过上面定义的全局的异常处理器,我们可以捕获并处理这个异常,并返回一个带有错误消息的JSONResponse
。
自定义异常:
除了使用内置的异常类型,我们还可以自定义异常类型,以便更好地区分和处理不同类型的错误。下面是一个自定义异常的示例:
class InvalidUserIdException(Exception): def __init__(self, user_id: int): self.user_id = user_id super().__init__("Invalid user id") @app.get("/users/{user_id}") async def read_user(user_id: int): if user_id <= 0: raise InvalidUserIdException(user_id) return {"user_id": user_id}
在上面的示例中,我们定义了一个名为InvalidUserIdException
的自定义异常类,它继承自Exception
类。我们还在构造函数中接受了一个user_id
参数,用于在异常消息中显示具体的用户ID。在路由处理函数中,当user_id
小于等于0时,我们抛出了这个自定义异常。
再次运行应用程序时,我们会看到与之前相同的结果。这是因为我们没有定义针对该自定义异常的特定异常处理程序。为了捕获和处理自定义异常,我们可以添加一个新的异常处理器:
@app.exception_handler(InvalidUserIdException) async def invalid_user_id_exception_handler(request, exc): return JSONResponse(status_code=400, content={"message": str(exc)})
在上面的示例中,我们添加了一个新的异常处理器,用于捕获InvalidUserIdException
异常。它与之前的全局异常处理器有相同的结构,只是处理逻辑不同。在这个处理器中,我们将异常消息转换为字符串,并返回一个带有错误消息的JSONResponse
。
这样,当我们访问/users/{user_id}
这个路由时,如果传入的user_id
小于等于0,将会抛出InvalidUserIdException
异常。通过特定的异常处理器,我们可以捕获并处理这个异常,并返回一个带有自定义错误消息的JSONResponse
/users/{user_id}
경로에 액세스할 때 수신 user_id
가 0보다 작거나 같으면 사용자 지정 예외가 발생합니다. 위에 정의된 전역 예외 처리기를 통해 이 예외를 포착 및 처리하고 오류 메시지와 함께 JSONResponse
를 반환할 수 있습니다.
사용자 정의 예외:
rrreee
위의 예에서는Exception
클래스에서 상속되는 InvalidUserIdException
이라는 사용자 정의 예외 클래스를 정의했습니다. 또한 예외 메시지에 특정 사용자 ID를 표시하기 위해 생성자에서 user_id
매개변수를 허용합니다. 라우팅 처리 기능에서 user_id
가 0보다 작거나 같으면 이 사용자 정의 예외가 발생합니다. InvalidUserIdException
예외를 포착하기 위한 새로운 예외 핸들러를 추가했습니다. 이전 전역 예외 처리기와 구조는 동일하지만 처리 논리가 다릅니다. 이 핸들러에서는 예외 메시지를 문자열로 변환하고 오류 메시지와 함께 JSONResponse
를 반환합니다. /users/{user_id}
경로에 액세스할 때 들어오는 user_id
가 0보다 작거나 같으면 InvalidUserIdException 코드>는 코드>예외가 발생합니다. 특정 예외 처리기를 사용하면 이 예외를 포착 및 처리하고 사용자 정의 오류 메시지와 함께 <code>JSONResponse
를 반환할 수 있습니다. 🎜🎜요약: 🎜FastAPI의 오류 처리 메커니즘을 사용하면 애플리케이션의 오류 상황을 더 잘 처리하고 관리할 수 있습니다. 전역 예외 처리기를 사용하여 모든 예외를 포착하고 처리하거나 특정 예외 처리기를 정의하여 특정 예외 유형을 처리할 수 있습니다. 동시에 다양한 유형의 오류를 더 잘 구별하고 처리하기 위해 예외 클래스를 사용자 정의할 수 있으므로 코드의 가독성과 유지 관리성이 향상됩니다. 🎜🎜참조 링크: 🎜🎜🎜FastAPI 공식 문서: https://fastapi.tiangolo.com/tutorial/handling-errors/🎜🎜Python 공식 문서: https://docs.python.org/3/tutorial/errors. HTML🎜🎜위 내용은 FastAPI에서 오류 처리 및 사용자 정의 예외를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!