Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pytorch
- fastapi #python웹개발
- python 정렬
- deeplearning
- fastapi #파이썬웹개발
- 파이토치기본
- pandas
- programmablesearchengine
- 사이킷런
- 판다스
- langchain
- NLP
- 파이썬
- 파이토치
- fastapi
- 랭체인
- 머신러닝
- 판다스 데이터정렬
- 자연어분석
- chatGPT
- sklearn
- 딥러닝
- MachineLearning
- 챗gpt
- 파이썬웹개발
- konlpy
- 비지도학습
- HTML
- OpenAIAPI
- Python
Archives
- Today
- Total
Data Navigator
FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기7 - http 예외처리하기 본문
FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기7
- http 예외처리하기 -
1. todo 어플리케이션에 http 예외 처리를 해보자
지금까지 작성한 todo 어플리케이션은 없는 페이지에 접속하려고 시도해도 응답코드 200과 함께 요청한 id 번호의 글이 없다는 메세지가 출력된다. 페이지가 없으면 404오류가 표시되도록 http 응답코드 예외처리를 해 보자.
2. HTTPException 클래스를 사용해 라우트를 변경하고 상황에 따른 적절한 응답코드와 상태 메시지를 반환하자.
1) todo.py에 HTTPException, status를 임포트 한다.
# todo.py
# HTTPException, status 를 추가로 import
from fastapi import APIRouter, Path, HTTPException, status
from model import Todo, TodoItem, TodoItems
2) get_single_todo, update_todo, delete_single_todo 함수의 return부분에 HTTPException으로 응답코드와 상태 메시지를 반환하는 코드를 추가한다.
(1) get_single_todo 부분 수정
# todo.py
@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( #return을 raise 이하로 수정
status_code=status.HTTP_404_NOT_FOUND,
detail="Todo with supplied ID doesn't exist",
)
(2) update_todo 부분 수정
# todo.py
@todo_router.put("/todo/{todo_id}")
async def update_todo(todo_data: TodoItem, todo_id: int = Path(..., title="The ID of the todo to be updated")) -> dict:
for todo in todo_list:
if todo.id == todo_id:
return {
"messsage" : "Todo updated successfully."
}
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Todo with supplied ID doesn't exist",
)
(3) delete_single_todo 부분 수정
# todo.py
@todo_router.delete("/todo/{todo_id}")
async def delete_single_todo(todo_id: int) -> dict:
for index in range(len(todo_list)):
todo = todo_list[index]
if todo.id == todo_id:
todo_list.pop(index)
return {
"message" : "Todo deleted successfully."
}
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Todo with supplied ID doesn't exist",
)
3) 서버 실행 후 docs로 가서 get_single_todo의 Try it out을 누르고 id에 100을 넣고 테스트해보자.
server response부분에서 Code 404 Details에 Error: Not Found와 "detail" : "Todo with supplied ID doesn't exist"가 나오면 성공이다.
update_todo, delete_single_todo 도 테스트해보자.
출처: 아데시나, 압둘라지즈 압둘라지즈. FastAPI를 사용한 파이썬 웹 개발. 번역 김완섭. 한빛미디어, 2023
'FastAPI' 카테고리의 다른 글
FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기9 - Jinja 패키지로 홈페이지 템플릿 만들기 - (0) | 2024.05.11 |
---|---|
FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기8 - jinja 템플릿 사용법 (0) | 2024.05.10 |
FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기6 - todo 목록 반환 모델 만들기 (0) | 2024.05.08 |
FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기5 - CRUD 구현 하기 (0) | 2024.05.08 |
FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기4 - 경로 매개변수와 쿼리 매개변수 (0) | 2024.05.04 |