422 Unprocessable Entity 에러는 주로 요청의 데이터 형식이나 요청 내용에 문제가 있을 때 발생
기존 코드
def get_current_user(credentials: HTTPAuthorizationCredentials = Security(security)) -> dict:
"""
JWT 토큰을 검증하고, 사용자 정보를 반환하는 함수
"""
token = credentials.credentials # Bearer 토큰 추출
user = decode_access_token(token) # ✅ 기존의 decode_access_token()을 사용하여 검증
if not user:
raise HTTPException(status_code=401, detail="유효하지 않은 토큰입니다.")
return user # 검증된 사용자 정보 반환
# 퀴즈 데이터 가져오기 API (JWT 인증 필요)
@router.get("/quiz")
def get_quiz_data(user: dict = Depends(decode_access_token), db: Session = Depends(get_db)):
get_current_user에서 jwt 토큰을 추출하는 부분은 잘 처리되지만
get_quiz_data에서 decode_access_token 함수를 Depends에 바로 사용
decode_access_token 함수가 토큰을 제대로 못하거나 잘못된 값을 반환할 시
422에러가 발생
수정 코드
@router.get("/quiz")
def get_quiz_data(user: dict = Depends(get_current_user), db: Session = Depends(get_db)):
Depends에 get_current_user를 사용