resultCode의 타입을 String으로 설정할지, HttpStatus로 설정할지에 따라 장단점과 사용 목적이 달라집니다. 아래에서 두 가지 방식의 차이점과 각각의 장단점을 설명하겠습니다.
resultCode를 String으로 사용하는 경우String 타입으로 설정하면 상태 코드를 더 자유롭게 정의할 수 있습니다.SUCCESS, ERR001, NOT_FOUND)를 사용할 수 있습니다.유연성:
ERR001, USER_BLOCKED)를 정의할 수 있습니다.의미 부여:
독립성:
추가 작업 필요:
String 상태 코드를 올바르게 처리하려면 추가적인 문서화 및 매핑이 필요합니다.String 상태 코드를 동기화하려면 별도의 관리가 필요합니다.표준화 부족:
resultCode를 HttpStatus로 사용하는 경우HttpStatus 타입을 사용하면 HTTP 상태 코드를 명시적으로 나타낼 수 있습니다.HttpStatus.OK, HttpStatus.BAD_REQUEST 등)을 사용합니다.표준 준수:
타입 안정성:
일관성:
유연성 부족:
USER_BLOCKED, ERR001)를 표현하기 어렵습니다.의미 제한:
404는 "리소스 없음"만 나타내며, 리소스가 없는 이유(권한 부족, 잘못된 요청 등)를 세부적으로 표현하지 못합니다.String 타입을 선택할 때예:
{
"resultCode": "USER_BLOCKED",
"message": "The user is blocked.",
"data": null
}
HttpStatus 타입을 선택할 때예:
{
"resultCode": 403,
"message": "Access is denied.",
"data": null
}
String이 적합합니다. 예를 들어, 서비스에 특화된 에러 상태 코드가 많고, 클라이언트가 이를 해석해야 할 경우.HttpStatus를 사용하는 것이 좋습니다. HTTP 프로토콜의 표준 상태 코드만으로도 충분히 의미를 전달할 수 있는 경우.두 가지를 혼합하려면 resultCode를 String으로 설정하고, 추가적으로 HttpStatus를 필드로 포함하거나, 상태 코드를 문자열과 HTTP 상태 코드를 매핑하는 방식도 가능합니다.