✏️ 오류코드의 트레이트 오프

  • 오류코드를 너무 세밀하게 정리하면 클라이언트에게 디테일한 메시지를 전달할 수 있지만 범용성이 낮아진다.
  • 반대로 단순하게 정리하면 범용성이 좋아 여러곳에서 사용할 수 있지만,
    메시지를 세밀하게 작성하기 어려워진다.

📍 해결방법

  • 실무에서는 기본적으로 단순하게 메시지를 정리하다가,
    세밀하게 작성해야 될 경우 단계적으로 작성하는 방법을 사용한다.

✏️ 오류 코드 설계

  • 개발 초기에는 단순하게 오류코드를 정리한다.
required=필수 값 입니다.
  • 나중에 기존 메시지보다 세밀한 메시지가 필요할경우 level 을 낮춰준다.
    • 이런식으로 단계별로 세밀한 정도를 높혀갈 수 있도록 설계한다.
    • rejectValue 는 매개변수를 기반으로 저장된 메시지의 오류코드중 가장 세밀한 오류코드를 실행시킨다.
 //-- level 3 --//
required=필수 값 입니다.

 //-- level 2 --//
required.item=상품이 입력되지 않았습니다.
required.user=이름입력되지 않았습니다.

 //-- level 1 --//
required.item.itemName=상품 이름이 입력되지 않았습니다.
required.item.price=상품 가격이 입력되지 않았습니다.
  • Controller 에서는 required 로 오류코드를 설정해둘경우
    별도의 Controller 로직 수정 없이
    세밀한 코드가 있으면 세밀한 코드로, 세밀한 코드가 없다면 단순한 코드로 MessageCodesResolver 가 자동으로 코드를 완성시켜준다.
    🔗 메시지 코드 리졸버
bindingResult.rejectValue("itemName", "required");
profile
잘못된 내용 PR 환영

0개의 댓글