
잘못된 요청이 들어왔을 때, HTTPException 클래스를 통해 예외처리를 해보려한다.
FastAPI 에서 오류는 FastAPI의 HTTPException 클래스를 사용해 예외를 발생시켜 처리한다.
HTTPException는 다음 세 개의 인수를 받는다.
아래의 코드는 기존 라우트를 변경해서 기본 응답 코드 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/ 를 통해 확인해보자.
todo_list에 저장된 todo를 조회 요청시

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

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