특징

테스트 코드를 통한 API 문서 자동화 도구

API 명세를 문서로 만들고 외부에 제공함으로써 협업을 원할하게 한다.

기본적으로 AsciiDoc을 사용하여 문서를 작성한다.

Rest Docs와 Swagger 차이

장점 단점
Rest Docs - 테스트를 통과해야 문서가 만들어져서 신뢰도가 높음

설정

Gradle 설정 추가

plugins {
	id "org.asciidoctor.jvm.convert" version "3.3.2"
}
configurations {
	compileOnly {
		extendsFrom annotationProcessor 
	}
	asciidoctorExt
}
dependencies {
	// RestDocs
	asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'
	testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc' // restDocs 사용 시 mockmvc 주로 사용

}
tasks.named('test') {
	useJUnitPlatform()
}

ext { // 전역 변수
	snippetsDir = file('build/generated-snippets')
}

test {
	outputs.dir snippetsDir
}

asciidoctor {
	inputs.dir snippetsDir
	configurations 'asciidoctorExt'

	sources { // 특정 파일만 html로 만든다.
		include("**/index.adoc")
	}
	baseDirFollowsSourceFile() // 다른 adoc 파일을 include 할 때 경로를 baseDir로 맞춘다.
	dependsOn test
}

bootJar {
	dependsOn asciidoctor
	from("${asciidoctor.outputDir}") {
		into 'static/docs'
	}
}