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 상태 코드를 매핑하는 방식도 가능합니다.