개발로 자기계발
article thumbnail
728x90
HTTP 예외를 이용한 API 에러 처리 방법

 

1. import HTTPException

from fastapi import FastAPI, HTTPException

 

2. 함수 안에 구문 추가

매개변수로 받은 값이 존재하지 않을 때 일으키는 에러 구문
@app.delete("/{book_id}")
async def delete_book(book_id: UUID):
    counter = 0

    for BOOK in BOOKS:
        counter += 1
        if BOOK.id == book_id:
            del BOOKS[counter - 1]
            return f'ID:{book_id} deleted'
    raise HTTPException(status_code=404, detail='Book not found')
  • book_id를 넣었을 때 code(404)와 'Book not found'가 출력된다.(정보를 렌더링 할 수 없음)

 

3. Swagger 확인

  • GET으로 요청했을 때 나오는 Title 1의 dict를 제거한다.
  • 해당 UUID 기준으로 잘 지워진 것을 볼 수 있다.

  • 에레확인
    • 앞서 지웠던 UUID를 입력하니 사전에 HTTPException에 정의된 404 Code와 detail 항목에 "Book not found"를 확인할 수 있다.


4. header 구문 추가해 보기

@app.delete("/{book_id}")
async def delete_book(book_id: UUID):
    counter = 0

    for BOOK in BOOKS:
        counter += 1
        if BOOK.id == book_id:
            del BOOKS[counter - 1]
            return f'ID:{book_id} deleted'
    raise HTTPException(status_code=404, detail='Book not found',
                        headers={"X-Header-Error":"Nothing to be seen at the UUID"})

 

5. Swagger 확인

  • Response headers에 headers 구문을 추가했을 때와 안 했을 때의 차이를 볼 수 있다.

왼쪽: headers 값이 없었을 때 / 오른쪽: headers 값이 있었을 때


6. HTTPException 구문을 함수화 시키기

  • 앞서 만든 delete_book 함수의 HTTPException 구문이 너무 길게 존재한다.
  • 차후 코드의 재사용성을 위해 함수화를 시킨다.
def raise_item_cannot_he_found_exception():
    return HTTPException(status_code=404,
                         detail="Book not found",
                         headers={"X-Header_Error":"Nothing to be seen at the UUID"})
  • 새롭게 구현된 delete_book 함수
@app.delete("/{book_id}")
async def delete_book(book_id: UUID):
    counter = 0

    for BOOK in BOOKS:
        counter += 1
        if BOOK.id == book_id:
            del BOOKS[counter - 1]
            return f'ID:{book_id} deleted'
    raise raise_item_cannot_he_found_exception()
함수화를 하면 좋은 이유

1. 코드 모듈화 - 함수를 기능별로 정리할 수 있다.
2. 코드 논리화 - 코드를 논리적으로 이해하는데 도움을 준다.
3. 코드 재사용성 - 작성한 함수는 언제든지 다시 사용할 수 있다.(반복적인 수행)
4. 코드 수정 용이 - 오류나 에러 수정이 쉽다.(안정성 향상)
5. 코드 간략화 - 중복되는 문장을 문장 밖으로 빼서 코드를 간결하게 할 수 있다. 

 

7. Swagger 확인

  • 위에 나왔던 Error구문과 똑같이 잘 나오는 것을 확인할 수 있다.

 

728x90
SMALL

'Develop > FastAPI' 카테고리의 다른 글

FastAPI Response Model - 25  (0) 2022.12.24
FastAPI Raise HTTP Exception(사용자 지정) - 24  (0) 2022.12.24
FastAPI Delete Request - 22  (0) 2022.12.23
FastAPI Put Request - 21  (2) 2022.12.23
FastApi Get By UUID - 20  (0) 2022.12.22
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)