[FastAPI] 예외처리 > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

python | [FastAPI] 예외처리

본문

1. 예외처리는 기본적으로 HTTPException 을 사용하면 된다


[code]

from fastapi import FastAPI, HTTPException


app = FastAPI()


items = { "foo": "The Foo" }


@app.get("/items/{item_id}")

async def read_item(item_id: str):

    if item_id not in items:

        raise HTTPException(status_code=404, detail="Item not found")

    return { "item": items[item_id] }

[/code]



예외에 사용자정의 헤더 추가하기

[code]

raise HTTPException(

        status_code=404,

        detail="Item not found",

        headers={ "X-Error": "There goes my error" }

    )

[/code]

    

    

2. 사용자 정의 예외처리

    1) Exception 을 상속하여 예외클래스를 만든다.

    2) 만들어진 클래스를 exception_hander 에 등록한다.

    3) raise 를 발생시키면 클래스 타입에 의해서 등록된 핸들러가 선택되고 처리된다.

    ※ 기본 예외 처리기도 exception_handler 에서 처리방법을 재정의 할 수 있다.

    

[code]

from fastapi import FastAPI, Request

from fastapi.responses import JSONResponse


class UserException(Exception):

    def __init__(self, name: str):

        self.name = name

        

app = FastAPI()


# 사용자 예외 클래스를 핸들러에 등록하고 처리방법을 구현한다

@app.exception_handler(UserException)

async def user_exception_handler(request: Request, exc: UserException):

    return JSONResponse(

        status_code=418,

        content={ "message": f"Oops! {exc.name} did something." }

    )

    

@app.get("/unicorns/{name}")

async def read_unicorn(name: str):

    if name == "yolo":

        raise UserException(name=name)

    return { "unicorn_name": name }

[/code]


댓글 0개

등록된 댓글이 없습니다.

Menu