이전에는 API 문서를 노션에서 관리하였다. 여러 개발자가 다같이 설계하기에는 노션이 편리하기는 하나, 개발이 완료된 이후에는 사용하기에 불편한 점이 있다.
Jira
를 사용한다.
따라서 별도의 API 문서 자동화 과정을 거치기로 하였다. 자동화 도구로는 RestDocs 와 Swagger 가 주로 언급이 되는데 프로덕션 코드와 완전히 독립적인 RestDocs
를 선택하였다.
적용 과정은 Spring Rest Docs 공식 문서를 참고하였다.
plugins {
id "org.asciidoctor.jvm.convert" version "3.3.2" // (1)
}
configurations {
asciidoctorExt // (2)
}
dependencies {
asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor:{project-version}' // (3)
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc:{project-version}' // (4)
}
ext {
snippetsDir = file('build/generated-snippets') // (5)
}
test {
outputs.dir snippetsDir // (6)
}
asciidoctor { // (7)
inputs.dir snippetsDir
configurations 'asciidoctorExt'
dependsOn test // (8)
}
bootJar {
dependsOn asciidoctor // (1)
from ("${asciidoctor.outputDir}/html5") { // (2)
into 'static/docs'
}
}
공식문서에서는 위의 예시만 포함되어 있다. 이는 .jar
이 실제로 만들어지는 배포 환경에서는 제대로 동작하나, 로컬에서 build 시에는 문서를 확인할 수 없다. 따라서 다음과 같이 별도의 copy 작업이 필요하다.