소개
이 라이브러리는 Spring REST Docs의 문서 작성 코드를 더 간단하고, 가독성있게 작성할 수 있도록 Kotlin DSL을 제공합니다.
KSP를 통해 컴파일 시점에 스프링 핸들러를 분석하여 각 핸들러마다 DSL 클래스를 생성합니다. 생성된 DSL 클래스를 통해 하나의 API에 대한 Spring REST Docs 테스트 코드를 작성하고 adoc 파일을 생성할 수 있습니다.
기존의 문제점
1. 복잡한 코드 구조
요청 시 쿼리 파라미터 1개가 필요하고, 바디에 필드가 2개 있는 JSON을 응답하는 API의 문서를 작성하기 위해 Spring REST Docs를 사용하여 코드를 작성해봅시다.
MockMvcRestDocumentation.document(
"identifier",
RequestDocumentation.queryParameters(
RequestDocumentation.parameterWithName("param1")
.optional()
.description("param1"),
),
PayloadDocumentation.responseFields(
PayloadDocumentation.fieldWithPath("field1")
.type(JsonFieldType.STRING)
.description("field1"),
PayloadDocumentation.fieldWithPath("field2")
.type(JsonFieldType.NUMBER)
.attributes(Attributes.key("format").value("number"))
.description("field2"),
),
)
위와 같이 간단한 API임에도 불구하고, 여러 줄의 소스코드를 작성해야 합니다.
만약 요청 및 응답에 사용되는 요소들이 엄청 많은 API에 대해 문서를 작성해야 한다고 생각해봅시다. 소스코드는 수십 수백줄을 넘어가게 되어 유지보수 하기에 굉장히 힘들고, 처음 코드를 작성하면 Import 해야 하는 패키지도 많기 때문에 문서를 작성하기 굉장히 불편합니다.