https://dev-elop.tistory.com/29
REST API DOCS
선정이유 Spring boot 설치 했더니 자동으로 들어있었다. 별도의 maven 설정을 안해도 됐다. 간단 개요 REST API를 문서화 한다 - HTML 형태로 내려준다. 서버(WAS) 구동한후 특정 URL접속 (docs/api-docs.html) J..
dev-elop.tistory.com
기본 테스트가 끝났다면 테스트한 것을 토대로 이쁜 HTML 화면을 위해 응용을 해보자.
참고 URL : http://woowabros.github.io/experience/2018/12/28/spring-rest-docs.html
Spring Rest Docs 적용 - 우아한형제들 기술 블로그
안녕하세요? 우아한형제들에서 정산시스템을 개발하고 있는 이호진입니다.지금부터 정산시스템 API 문서를 wiki 에서 Spring Rest Docs 로 전환한 이야기를 해보려고 합니다.
woowabros.github.io
우아한 형제들 블로그 참고해서 ApiDocumentUtils.java 파일 만들고 했으나 문서 생성 과정이 다른점이 많아 추가한다.
request field 와 response field 설명서를 만들어야 하는데 기존 블로그들과는 좀 달라서 개인적으로 작성했다.
//request
List<FieldDescriptor> requestFieldDescriptorList = new ArrayList<FieldDescriptor>();
FieldDescriptor requestFieldDescriptor = PayloadDocumentation.fieldWithPath("username").type(JsonFieldType.STRING).description("사용자이름");
requestFieldDescriptorList.add(requestFieldDescriptor);
RequestFieldsSnippet requestFieldsSnippet = PayloadDocumentation.requestFields(requestFieldDescriptorList);
//response
List<FieldDescriptor> responsefieldDescriptorList = new ArrayList<FieldDescriptor>();
FieldDescriptor username = PayloadDocumentation.fieldWithPath("username").type(JsonFieldType.STRING).description("사용자이름");
FieldDescriptor statusCode = PayloadDocumentation.fieldWithPath("statusCode").type(JsonFieldType.NUMBER).description("상태코드");
responsefieldDescriptorList.add(username);
responsefieldDescriptorList.add(statusCode);
ResponseFieldsSnippet responseFieldsSnippet = PayloadDocumentation.responseFields(responsefieldDescriptorList);
field 작성후 다시 문서 작성
/*
* 테스트 post 주소 지정
* 콘텐츠 타입 지정
* 어셉트 타입 지정
*/
ResultActions resultActions = mockMvc.perform(post("/url1/url2")
.content(objectMapper.writeValueAsString(parameter))
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON));
/*
* andExpect - http 결과가 200 일때만
* document - 결과 문서가 주소처럼 이쁘게 생성됨
* ApiDocumentUtils - 파일로 생성한 java 파일
* requestFieldsSnippet, responseFieldsSnippet - 이부분이 기존과 다르더라..
*/
resultActions.andExpect(status().isOk())
.andDo(document("/url1/url2",
ApiDocumentUtils.getDocumentRqeust(),
ApiDocumentUtils.getDocumentResponse(),
requestFieldsSnippet,
responseFieldsSnippet
)
);
코드 작성후 테스트 다시 해보고
maven install 하면 문서가 작성된다. 작성된 문서는 소스파일 위치 말고 target!! 그러니깐 배포 위치에 생성된다.
생성된 파일은 *.adoc 같은 파일들인데. 이건 html 파일로 만들기전 내용들의 조각이라고 생각하면 된다.
이 파일들을 합쳐서 html로 만들기 위해선 다시
adoc 파일들을 합쳐라! 라고 하는 일종의 프로퍼티 파일이 하나 필요하다.
아무것도 안하면 기본설정 폴더는 src/main/asciidoc/ 일것이다.
include::{snippets}/ur1/url2/http-request.adoc[]
가장 기본적인 문법은 위와 같지만 이 문서 만들기 문법은 asciidoc 를 검색해서 찾길 바란다.
최종적으로 만들어지는 기본 HTML 경로는
{url}/docs/api-docs.html
'JAVA > SOURCECODE' 카테고리의 다른 글
jar 실행시 build 위치 추가 (0) | 2021.03.02 |
---|---|
Spring Security HttpSecurity, WebSecurity 차이? (0) | 2019.11.08 |
윈도우 Active Directory 연동 (0) | 2019.11.01 |
REST API DOCS (0) | 2019.10.29 |
반복문의 속도 개선 (0) | 2019.10.27 |