반응형
swagger에서 request, response에 enum 값은 별도 설정을 안 하면 enum의 name이 나온다.
data class GetUserResponse(
val type: UserType,
val name: String
)
enum class UserType {
NORMAL,
VIP
}
근데 아마 대부분 enum name을 대문자로 설정할 건데 실제 request, response 될 때 받는 값을 소문자로 쓰고 있을 거다.
(아닐 수도..)
그래서 swagger에서 소문자로 보여주고 싶었는데 이상하게 설정을 해도 잘 안 보였다.
결국 해결했는데
설정하는 방법을 알아보자.
enum 원하는 값으로 보여주는 방법
2가지 방법이 있다.
1. @get:JsonValue
enum class UserType(@get:JsonValue val value: String) {
NORMAL("normal"),
VIP("vip")
}
enum 필드 추가해서 리턴하는 방법이다.
@get:JsonValue를 안 쓰고 @JsonValue 쓰면 안 된다.
소문자로 리턴하기 위해 필드를 추가하는 게 오버라고 생각들면 2번을 쓰면 된다.
소문자로 리턴하고 싶은 게 아니라 특정 enum 필드 중 하나로 리턴한다면 이 방법이 더 좋다.
2. @JsonValue
enum class UserType {
NORMAL,
VIP;
@JsonValue
fun getUserType(): String {
return name.lowercase()
}
}
이번엔 @get:JsonValue가 아닌 @JsonValue를 사용해야 한다.
단순 소문자로만 아니면 특정 필드들의 조합으로 보여주고 싶다면 이 방법이 좋을 거 같다.
잘 골라서 쓰자!
반응형
'Spring' 카테고리의 다른 글
[Spring] ArgumentResolver 추가 방법 (kotlin ver.) (0) | 2022.12.18 |
---|---|
[Spring] 코틀린 springdoc-openapi 클래스명 중복 처리 방법 (0) | 2022.09.09 |
[Spring] API 문서화(apidoc, swagger) 라이브러리 비교 - springfox vs springdoc-openapi (0) | 2022.09.08 |
[Spring] JMeter 사용법 - JMeter란?, 테스트 방법 (1) | 2022.09.07 |
[QueryDSL] String to Int, Varchar to Number (castToNum) (1) | 2021.10.18 |
댓글