Posts Spring - Spring Rest Docs란 ?
Post
Cancel

Spring - Spring Rest Docs란 ?

Spring REST Docs란 ?

RESTful 서비스를 문서화하는 데 도움을 주는 도구

  • Asciidoctor로 작성한 수동 문서와 Spring MVC Test를 통해 자동 생성된 스니펫을 결합하여 사용
  • 이 프로젝트의 핵심 철학 중 하나는 테스트를 통해 문서를 생성한다는 점
    • 이는 API의 실제 동작과 항상 일치하는 정확한 문서가 생성되도록 보장
    • 테스트를 실행하면 요청과 그에 대한 응답에 대한 문서 스니펫이 자동으로 생성

Asciidoctor ?

Asciidoc이라는 마크업 언어를 HTML, PDF 등의 문서로 변환해주는 도구 (공식 사이트)

  • Spring REST Docs는 API 설명서의 본문을 Asciidoc 형식으로 작성하게 하고, 이를 Asciidoctor로 변환해서 최종 문서를 생성

Asciidoctor로 작성한 수동 문서와 Spring MVC Test를 통해 자동 생성된 스니펫 ?

Spring REST Docs는 테스트 코드를 실행할 때, API 요청과 응답을 자동으로 캡처해서 “스니펫(snippet)”이라고 불리는 작은 문서 조각들을 생성

  • Spring MVC 테스트
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    @Test
    void helloRestDocs() throws Exception {
      mockMvc.perform(get("/api/hello"))
              .andExpect(status().isOk())
              .andDo(document("hello",
                      responseFields(
                              fieldWithPath("message").description("The hello message")
                      )
              ));
    }
    
  • 스니펫 예시
    1
    2
    3
    4
    
    curl-request.adoc: cURL 명령어 예시
    http-request.adoc: 요청 헤더/본문
    http-response.adoc: 응답 헤더/본문
    response-fields.adoc: 응답 JSON의 필드 설명
    
  • Asciidoctor로 작성한 수동 문서
1
2
3
4
5
6
7
8
9
10
= API Documentation
:toc: left

= API 문서입니다.

== Hello API

=== `/api/hello`

include::{snippets}/hello/http-request.adoc[]
  • 생성된 HTML 문서 image

참고 자료

This post is licensed under CC BY 4.0 by the author.

OS - 리눅스 Load Average 살펴보기

-