Skip to content

Conversation

@shinheekim
Copy link
Contributor

@shinheekim shinheekim commented Dec 29, 2025

🔎 작업 내용

  • Swagger API 문서에서 에러 응답을 자동으로 생성하는 기능 구현
  • @ApiErrorResponses 커스텀 어노테이션 추가
  • ApiErrorResponseDocsCustomizer 클래스를 통한 OpenAPI 에러 응답 자동 생성
  • ProfileApiDocs@ApiErrorResponses 적용

주요 변경사항

  1. @ApiErrorResponses 어노테이션 생성

    • ErrorCode enum 배열을 받아서 해당 ErrorCode들의 에러 응답을 자동 생성
    • 메서드 및 클래스 레벨에서 사용 가능
  2. ApiErrorResponseDocsCustomizer 구현

    • OpenAPI 스키마에 ErrorResponse 스키마 등록
    • OperationCustomizer를 통해 @ApiErrorResponses 어노테이션을 읽어 에러 응답 자동 추가
    • 각 ErrorCode에 맞는 status, errorCode, field(null), message를 포함한 예시 자동 생성
    • LinkedHashMap을 사용하여 필드 순서 보장 (status → data 순서)
  3. ProfileApiDocs 적용

    • 모든 프로필 관련 API에 @ApiErrorResponses 적용
    • ErrorCode enum을 직접 사용하여 타입 안정성 확보

사용 예시

@ApiErrorResponses({
    ErrorCode.NICKNAME_ALREADY_TAKEN,
    ErrorCode.PROFILE_NOT_FOUND,
    ErrorCode.UNAUTHORIZED
})
ResponseEntity<ApiResult<Void>> updateNickname(...);

생성되는 에러 응답 예시

{
  "status": 409,
  "data": {
    "errorCode": "NICKNAME_ALREADY_TAKEN",
    "field": null,
    "message": "이미 사용 중인 닉네임입니다."
  }
}

➕ 이슈 링크

📸 스크린샷

image

🧑‍💻 예정 작업

📝 체크리스트

  • 브랜치 이름은 feature/개발내용 형식으로 작성했는가?
  • 커밋 메시지는 feat: 커밋 내용 형식으로 작성했는가?
  • 작업 전 Issue를 작성했는가?
  • dev 브랜치로 병합을 요청했는가?
  • 불필요한 주석과 공백은 제거했는가?
  • 코드 리뷰어의 피드백을 반영했는가?
  • 테스트를 진행했는가?
  • 테스트 코드를 작성했는가?

@shinheekim shinheekim self-assigned this Dec 29, 2025
@shinheekim shinheekim added 📝 documentation README, API 문서, 주석 등 문서 작업 🔧 BE labels Dec 29, 2025
@shinheekim shinheekim changed the base branch from feat/#107-signup-final-api to dev December 30, 2025 06:38
Copy link
Collaborator

@jaejoong0529 jaejoong0529 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

새로운 방식이네요! 좋은거같습니다

@jaejoong0529 jaejoong0529 merged commit 5715e77 into dev Dec 30, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔧 BE 📝 documentation README, API 문서, 주석 등 문서 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[DOCS] Swaager UI 에러 응답 커스텀

3 participants