[FastAPI] HTTP 예외 구현하기

도톨이·2024년 3월 8일

FastAPI

목록 보기
10/17
post-thumbnail

지난 실습에 이어 FastAPI 애플리케이션 book project 에서 HTTP 예외 구현하는 방법을 알아보자.
이를 위해 우선 fastapi 에서 HTTPException 을 임포트한다.

import fastapi import FastAPI, Path, Query, HTTPException

추가를 했다면 지난번 프로젝트에 이어
만약 id 로 책을 검색할 때 책을 찾을 수 없다면 HTTPException 을 발생시킨다. 상태코드는 404이고 detail 은 'Item not found' 을 입력한다.

@app.get("/books/{book_id}")
async def read_book(book_id: int = Path(gt=0)):
    for book in BOOKS:
        if book.id == book_id:
            return book
    raise HTTPException(status_code=404, detail='Item not found')

스웨거로 가서 테스트를 해보자.
존재하지 않을만한 아이디를 입력한 후 실행하면,

지정했던 응답(404)을 받을 수 있다

다음은 지난 시간 만들었던 update_book 함수도 에러 처리를 해줄 것이다.
우선 book_chanaged 라는 flag 를 만들어서 만약 업데이트가 되었다면 해당 flag 를 True 로 바꿔준다.
루프가 끝난 후 flag 가 False 라면 업데이트가 발생하지 않았음을 의미하고 이는 해당 Id 가 없다고 해석할 수 있다. 따라서 404 에러를 발생시킨다.

@app.put("/books/update_boook")
async def update_book(book: BookRequest):
    book_changed = False
    for i in range(len(BOOKS)):
        if BOOKS[i].id == book.id:
            BOOKS[i] = book
            book_changed = True
    if not book_changed:
        raise HTTPException(status_code=404, detail='Item not found')
profile
Kotlin, Flutter, AI | Computer Science

0개의 댓글