패스트캠퍼스 백엔드 부트캠프 3기/Project

[Project] 챗봇 파이썬 응답 흐름, 예외처리 정리

hail2y 2025. 6. 12. 23:46

 

LifeSpan

@app.on_event("startup") 지, deprecated

  • lifespan 방식과 이벤트 핸들러 방식은 함께 사용할 수 없어서 둘 중 하나만 사용해야 한다. 
  • 이벤트 핸들러는 등록된 순서대로 실행
@app.on_event("startup")
@app.on_event("shutdown")
- 애플리케이션당 한 번만 정의 가능

@asynccontextmanager
async def lifespan(app: FastAPI):
    # 애플리케이션 시작 전
    yield
    # 애플리케이션 종료 전
    
app = FastAPI(lifespan=lifespan)

 

  • 애플리케이션 개발할 때 시작과 종료 작업이 서로 연결되는 경우 많음
  • 전역 변수 하나의 컨텍스트에서 같이 사용
  • 효율적인 리소스 관리
  • yield 기준으로 초기화한 데이터를 함수 내부의 상태로 유지 가능

 

https://fastapi.tiangolo.com/ko/advanced/events/#startup

 

Lifespan 이벤트 - FastAPI

FastAPI framework, high performance, easy to learn, fast to code, ready for production

fastapi.tiangolo.com

https://velog.io/@034179/FastAPI-Lifespan-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

FastAPI Lifespan 이해하기

@app.on_event()에서 Lifespan으로의 변화

velog.io

 

 

 

https://velog.io/@jds7979/Spring-%EC%A0%84%EC%97%AD%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC-with-EnumGlobal-Exception-Handler

 

Enum 활용 Spring 전역예외처리(Global Exception Handler)

java 의 enum 객체를 활용하여 spring boot의 프로젝트에 global exception handler를 적용시키는 방법. 1. 예외 발생시에 날려줄 code, message 등을 enum 객체로 생성 스크린샷 2023-09-10 233922.png

velog.io

더보기
0.  다른 API 응답 형식

[POST] success(bool), code, message
[POST] result(int), message
[PUT, PATCH]  success(bool), code, message
[DELETE] result(int), message
[POST] success(bool), code, message
[PUT, PATCH]  success(bool), code, message
[DELETE] success(bool), code, message

인증 result(int), message
삭제, 수정, 등록 success(bool), code, message

 

1. 명확한 목표, 응답 표준 정의
Mono<REsponseEntity<ChatApiREsponse>>

{
success(bool), 
code,
message,
data  **(nullable)**
}

-- RESTful API에서 사용되는 표준적이고 효과적인 응답 방식

2. 공통 응답 클래스 구현 dto
- python
예외 객체 생성
전역 예외 처리기

- spring

Mono<ResponseEntity<ApiResponse>>

3. 예외 처리 통합

- 커스텀 예외 정의
- 전역 예외 핸들러