Skip to content

feat: 에러코드 규격화#107

Open
yuuuyeonho wants to merge 7 commits intodevelopfrom
feature/106-error-code-standardization​

Hidden character warning

The head ref may contain hidden characters: "feature/106-error-code-standardization\u200b"
Open

feat: 에러코드 규격화#107
yuuuyeonho wants to merge 7 commits intodevelopfrom
feature/106-error-code-standardization​

Conversation

@yuuuyeonho
Copy link
Contributor

작업 내용

  • ErrorCode 반환 규격화했습니다.
  • 에러코드는 기존 도메인별 에러메세지 분리시켜뒀던거대로 "도메인이름-넘버"로 맞췄습니다. 넘버는 그냥 써있던거 순서대로 했는데 어떤지요

특이 사항 (리뷰 시 참고할 내용)

  • 기존 상태코드는 아직 못고치고 400으로 다 통일시켜놨습니다...

관련 이슈

close #106

@yuuuyeonho yuuuyeonho linked an issue Mar 31, 2025 that may be closed by this pull request
Copy link
Member

@kckc0608 kckc0608 left a comment

Choose a reason for hiding this comment

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

lgtm 좋습니다~

Comment on lines +7 to +8
INVALID_INPUT_VALUE(400, "COMMON-001", "유효성 검증에 실패했습니다."),
INTERNAL_SERVER_ERROR(500,"COMMON-002", "서버에서 처리할 수 없습니다."),
Copy link
Member

Choose a reason for hiding this comment

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

INTERNAL_ERROR(INTERNAL_SERVER_ERROR, "내부 서버 에러가 발생했습니다. 관리자에게 문의 바랍니다."),
METHOD_ARGUMENT_NULL(BAD_REQUEST, "인자는 null이 될 수 없습니다."),
METHOD_ARGUMENT_NOT_VALID(BAD_REQUEST, "인자가 유효하지 않습니다."),
REGEX_VIOLATION(BAD_REQUEST, "정규표현식을 위반했습니다."),
FORBIDDEN_ACCESS(FORBIDDEN, "접근 권한이 없습니다."),

상태코드 숫자를 이렇게 상수로 적으면 가독성이 더 좋을 것 같은데 어떻게 생각하시나요?
(위 코드에서 상수는 이미 정의된 org.springframework.http.HttpStatus.*; 패키지 상수를 가져다가 사용한 케이스입니다)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

좋은거 같습니다! 그럼 숫자는 상수로 적고 "COMMON-001" <- 이 도메인 코드는 그대로 남기면 되겟죠??

Copy link
Member

Choose a reason for hiding this comment

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

넵 맞습니다!

@Pattern(regexp = STUDENT_ID_REGEX, message = "학번 형식이 올바르지 않습니다.")
String studentId,
@Email(message = EMAIL_INVALID_FORMAT)
@Email(message = "이메일 형식이 올바르지 않습니다.")
Copy link
Member

Choose a reason for hiding this comment

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

request 에서 검증 메서드의 상수화가 사라지는 부분이 아쉬운 것 같은데, 에러 메세지에 대한 상수와 에러 코드 포맷을 같이 가져가서, 에러 코드 포맷 내에서 상수 메세지를 같이 활용하는 건 어떻게 생각하시나요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

STUDENT_ID_INVALID_FORMAT(null, "", "학번 형식이 올바르지 않습니다.");

제가 이해한게 맞다면 ErrorCode에 요런 형식의 값을 추가해서 메시지 필드를 활용하는거 맞을까요??

Copy link
Contributor Author

Choose a reason for hiding this comment

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

아아아 기존 에러메시지 상수 클래스를 그대로 운영하면서 에러 코드 포맷에서 에러메시지 상수를 사용하는 방법인건가요???

Copy link
Member

Choose a reason for hiding this comment

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

제가 말을 어렵게 적었었네요.. 에러메세지 상수 클래스와 에러 코드 포맷 같이 유지하는 방식 맞습니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

좋을 것 같습니다!! 저도 저 부분 아쉬웠어서 에러메시지 클래스 다시 살려보겠습니다~

Copy link
Contributor Author

Choose a reason for hiding this comment

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

MEMBER_NOT_EXISTS_WITH_STUDENT_ID(NOT_FOUND, "MEMBER-001", ErrorMessage.MEMBER_NOT_EXISTS_WITH_STUDENT_ID),
DUPLICATED_STUDENT_ID(CONFLICT, "MEMBER-002", ErrorMessage.DUPLICATED_STUDENT_ID),
DUPLICATED_EMAIL(CONFLICT, "MEMBER-003", ErrorMessage.DUPLICATED_EMAIL),
PASSWORD_IS_DIFFERENT_FROM_CHECK(BAD_REQUEST, "MEMBER-004", ErrorMessage.PASSWORD_IS_DIFFERENT_FROM_CHECK),

에러 코드 포맷 내의 메세지까지 상수 메세지를 활용하려니까 오히려 ErrorCode 클래스를 봤을 때 정보성이 떨어지는 것 같습니다...ㅠㅠ
Pattern에 들어가는 메세지만 상수화 시키고 에러 코드 포맷의 메세지는 문자열을 사용하는 건 어떨까요?

Copy link
Member

@kckc0608 kckc0608 Jul 29, 2025

Choose a reason for hiding this comment

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

혹시 ErrorMessage. 부분을 제거해도 (정적 임포트) 비슷하게 보일까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

MEMBER_NOT_EXISTS_WITH_STUDENT_ID(NOT_FOUND, "MEMBER-001", MEMBER_NOT_EXISTS_WITH_STUDENT_ID),
DUPLICATED_STUDENT_ID(CONFLICT, "MEMBER-002", DUPLICATED_STUDENT_ID),
DUPLICATED_EMAIL(CONFLICT, "MEMBER-003", DUPLICATED_EMAIL),
PASSWORD_IS_DIFFERENT_FROM_CHECK(BAD_REQUEST, "MEMBER-004", PASSWORD_IS_DIFFERENT_FROM_CHECK),

이런식으로 나오는데 이전에 있었던 상황처럼
프론트 측에서 백엔드에 잘못된 api 반환으로 "~"의 에러메세지가 온다 라고 확인 요청이 들어왔을 때
에러코드를 보면서 메세지를 확인하려면 에러메세지 클래스와 왔다갔다 하면서 확인해야 하는게 정보성이 떨어진다고 생각했습니다..!
+) 그리고 지금 에러코드와 연관된 에러메세지의 이름이 같아서 정적 임포트를 사용하려면 한쪽의 이름을 다 바꾸어야 하는 상황입니다ㅠ

Copy link
Member

Choose a reason for hiding this comment

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

아하 그렇군요ㅠㅠ
그러면 말씀하신 방향대로 에러코드 포맷에서는 그냥 문자열을 사용하는 걸로 가죠 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

에러코드 규격화

2 participants