본문 바로가기
Spring

[Spring] 코틀린 springdoc-openapi, swagger - enum 소문자, 원하는 값으로 보여주기

by 노력남자 2022. 9. 9.
반응형

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를 사용해야 한다.

 

단순 소문자로만 아니면 특정 필드들의 조합으로 보여주고 싶다면 이 방법이 좋을 거 같다.

 

 

잘 골라서 쓰자!

반응형

댓글