반응형
springdoc-openapi를 사용 중인데 이상하게 response에 내가 설정한 class 필드들이 나오지 않았다.
내가 설정한 GetOrderResponse는 아래와 같았다.
data class GetOrderResponse(
val product: Product
) {
class Product(
val id: Long
)
}
근데 swagger에선 아래와 같이 나왔다.
? 도대체 왜 저렇게 나오는 거지..
좀 헤맸는데 원인을 찾아냈고 해결책도 찾았다.
원인
data class GetOrderResponse(
val product: Product
) {
class Product(
val id: Long
)
}
data class GetProductResponse(
val product: Product
) {
class Product(
val id: Long,
val name: String
)
}
같은 이름의 class가 있어서 그랬던 거였다.
springdoc-openapi는 apidoc을 만들 때 클래스 이름을 쫙 읽어놓고 이름이 같으면 아까 읽어놓은 값을 넣어준다.
GetProductResponse에 있는 Product class를 먼저 읽어서 이 사단이 난 걸로 보인다.
해결책
당연히 우리와 같은 문제를 가진 사람들이 있었고 거기에 해답이 있었다.
1.4.4 버전부터 가능하다.
properties에 아래 옵션을 주면 해결된다.
fqn은 fully qualifed name이다.
패키지를 포함한 이름을 뜻한다.
springdoc.use-fqn=true
위 옵션을 안 주면 이렇게 나오던 게
패키지 이름까지 쭉 나오면서 제대로된 class를 가지고 온다.
단점은 패키지명까지 나와서 좀 보기 안 좋다?정도이다.
패키지 이름으로 구분하고 실제 swagger에서 보여지는 건 class 이름만 보여주면 딱 좋았을텐데 그게 좀 아쉽다.
반응형
'Spring' 카테고리의 다른 글
[Spring] ReturnValueHandler 추가 방법 (kotlin ver.) (0) | 2022.12.18 |
---|---|
[Spring] ArgumentResolver 추가 방법 (kotlin ver.) (0) | 2022.12.18 |
[Spring] 코틀린 springdoc-openapi, swagger - enum 소문자, 원하는 값으로 보여주기 (0) | 2022.09.09 |
[Spring] API 문서화(apidoc, swagger) 라이브러리 비교 - springfox vs springdoc-openapi (0) | 2022.09.08 |
[Spring] JMeter 사용법 - JMeter란?, 테스트 방법 (1) | 2022.09.07 |
댓글