[FastAPI] 3. 오류 처리 - HTTPException

JeongInHuh·2023년 11월 27일

FastAPI

목록 보기
3/3
post-thumbnail

🔬 HTTPException

잘못된 요청이 들어왔을 때, HTTPException 클래스를 통해 예외처리를 해보려한다.

FastAPI 에서 오류는 FastAPI의 HTTPException 클래스를 사용해 예외를 발생시켜 처리한다.


HTTPException는 다음 세 개의 인수를 받는다.

  • status_code : 예외 처리 시 반환할 상태 코드
  • detail : 클라이언트에게 전달한 메시지
  • headers : 헤더를 요구하는 응답을 위한 선택적 인수

아래의 코드는 기존 라우트를 변경해서 기본 응답 코드 200 대신 오류 발생시 404를 반환하게 만들었다. (상태코드는 맨 아래 참고)

# todo.py

from fastapi import APIRouter, Path, HTTPException, status

@todo_router.get("/todo/{todo_id}")
async def get_single_todo(todo_id: int = Path(..., title="The ID of the todo to retrieve.")) -> dict:
    for todo in todo_list:
        if todo.id == todo_id:
            return {"todo": todo}
   # 오류 시 예외 처리로 변경
    raise HTTPException( 
        status_code=status.HTTP_404_NOT_FOUND,
        detail="Todo with supplied ID doesn't exist",
    )



🔍 확인해보기

todo_list 에 저장된 todo 데이터는 다음과 같다.

http://localhost:8000/docs/ 를 통해 확인해보자.

🌟 200 - 조회 성공

todo_list에 저장된 todo를 조회 요청시


💣 404 - 오류 처리

저장되지 않은 todo_id로 조회하려 할 때

HTTP 상태코드

상태 코드는 서버가 반환한 응답에 포함되는 짧은 코유 코드로, 클라이언트가 보낸 요청의 상태를 나타낸다. 상태 코드는 크게 다섯 개의 그룹으로 분류할 수 있으며 각 그룹은 다음과 같은 상태를 의미한다.

  • 1xx : 요청을 받았다.
  • 2xx : 요청을 성공적으로 처리했다.
  • 3xx : 요청을 리다이렉트했다.
  • 4xx : 클라이언트 측에 오류가 있다.
  • 5xx : 서버 측에 오류가 있다.
profile
신입개발자. 이젠 서버를 곁들인 velog 꾸미기 : https://velog.io/@ybkim3603/Velog벨로그-사용법-튜토리얼 Git컨벤션: https://velog.io/@shin6403/Git-git-커밋-컨벤션-설정하기 커리어 방향 설정 모음글:https://velog.io/@eon7500/커리어-방향성-설정에-도움되는-글

0개의 댓글