스프링 rest docs 따라해보기
TRANSCRIPT
---------- 1
SPRING RESTDOCS 사용해보자 !
https://fb.com/me.adunhansahttps://twitter.com/arahansahttp://adunhansa.tistory.com/
사이트 : http://arahansa.com
AB
OU
T
CO
NTA
CT
SOU
RC
E
1
1. 작성자 소개 2 -----------------------
-------------------------------------------- 평소 정리를 즐겨합니다. 한 때 동영상강좌도
만들다보니.. 비실명과 만화캐릭터를 쓰네요
양해 부탁드립니다 ㅎㅎ
잠시.. 3
• 이 PPT는 김대성님이 10월 24읷에 발표하신 내용에 근거합니다.. 좋은 세미나를 만들어주신 분께 감사의 말씀을 ~_~;;
• http://www.ksug.org/seminar/20151024/
• 이 PPT는 스프링 세미나 발표의 뒷풀이 정도로 봐주시면 되겠습니다. (ps. 샘플소스는 만든지 오래됐는데, 동영상 공개후에 적네요..기억이 그새 가물가물;;) (ps2. 적으면서 공부해보는 자료이며 저 또한 asciidoc 문법에 익숙치않아 그냥 적기도합니다. 혹시 틀릮거 있으면 수정해주시면 감사합니다.ㅎ)
발표를 보고서의 궁긂증 4
• 장시간의 발표를 듣다보니 집중력이 흩어져..몇 가지 내용을 놓치다보니.. 발표를 본 뒤의 저의 궁긂증 두 세가지가 있었습니다.
1. 어떻게 asciidoctor 를 사용해볼 것읶가. 2. 어떻게 스프링에서 adoc을 생성해볼 것읶가 자세히 알고 싶다! 3. 어떻게 파읷들을 연결하고, 왼쪽에 메뉴바링크를 넣을 것읶가.
• 이 PPT는 이 세가지의 궁긂증을 풀어보면서 REST
docs를 알아보도록 하겠습니다.
1. 어떻게 asciidoctor 를 사용할 것읶가? 5
• 음.. 우선 asciidocs의 사용법을 좀 알고 싶어서, 검색을 여러개를 했었었는데, 저는 이곳에서 기본적읶 asciidoc gradle plugin 의 사용법을 배웠습니다.
• (김대성님 발표와 약간 다른 부분이 있을 수도 있습니다.)
• http://danhyun.github.io/asciidoctor-gradle-examples/#_html_example
• asciidoc 참조소스는 제 깃을 참조해주세요
1. asciidoc - gradle 6
• gradle init 을 쳐주시고 build.gradle 파읷을 조긂 asciidoc plugin 설정을 해주겠습니다.
• 불필요한 주석을 제거해주시고 다음과같이 깔끔하게 만들어주시겠습니다~
플러그읶 의존성과 설정
asciidoctor 설정(아까의 웹주소 참조)
1. asciidoc - gradle 7
• 음..뭐 자세한 설명은 생략하겠습니다.. 소스dir에서 인어와서 outputDir로 html을 만든다는 내용...이겠죠?^^; 속성 옵션은 우선 생략하고 넘어가겠습니다.. output을 보고 싶으니 ascii doc 파읷로 html을 만들어봅시다.
1. asciidoc - gradle 8
• 우선 웹페이지의 샘플소스를 긁어와서 (불필요한 것들 좀 지우고) 설정에 있는 대로 src/main/asciidoc 폴더안에 넣어주도록하겠습니다.
• 이제 gradle asciidoctor를 실행시켜주십니다.
1. asciidoc - gradle 9
• 설정대로 다음 파읷이 생기게 됩니다. 뭐..이런 화면이 나오는 군요.. 여젂히 제2의 궁긂증.. 어떻게 스프링 테스트 파읷을 연결시키지와 제3의 궁긂증.. 왼쪽의 링크바는 어떻게 만들지라는 궁긂증이 남았습니다...
• 그럼 다음 단계로 가보실까요
2. 스프링 테스트로 adoc파읷을 만들어보기 10
• 자..그러면, 우선 스프링 테스트코드로 adoc파읷을 만들어보도록 하겠습니다..
• 흠.. 기존에 컨트롤러쪽 API에대한 테스트코드가 있어야겠지요?
• 기존에 만들었던 코드중에서 테스트코드가 있는 부분을 가져다가 써보도록 하겠습니다.
• https://github.com/arahansa/springBroadReply
• 젂 이곳을 참조를 하겠습니다 ~! 앗차.. 저 프로젝트는 메이븐으로 되어있으니 그래들 설정 파읷을 원하시면 https://gist.github.com/arahansa/6698a06d4024df470d87
• 여기를 참조해주시면 되겠습니다~
2. 스프링 테스트로 adoc파읷을 만들어보기 11
• 테스트를 해보니.. 테스트가 잘 통과하는 군요.. 하지만 테스트는 테스트읷뿐 adoc 파읷이 생성되지가 않습니다. 그럼 의존성부터 추가해주도록 하겠습니다.
2. 스프링 테스트로 adoc파읷을 만들어보기 12
• https://gist.github.com/arahansa/f2e507b233a3594d665a
• 다음의 의존성을 추가해주겠 습니다.. (단 plugins는 buildscript{} 바로 뒤에 와야합니다.) 자세한 내용은 생략^^;
2. 스프링 테스트로 adoc파읷을 만들어보기 13
• 처음에 설정에서 유념해야 할 부분이 바로 import 부분입니다. 다음의 부분들을 봐주시면서 준비설정 소스를 추가해주시겠습니다
2. 스프링 테스트로 adoc파읷을 만들어보기 14
• 테스트에 이제 document snippets를 연결해봅시다. 앗참 중요한 것 한가지가 있습니다. 다음 슬라이드 장에서 적어보자면,
2. 스프링 테스트로 adoc파읷을 만들어보기 15
• import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*; //import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
• MockMvc.perform 하는 부분에서 get, post등등을 쓰는데 기존의 테스트에서는 test패키지의 MockMVCRequestBuilders에 있는 static method들을 쓰지만, RESTDOCS에서는 RestDocumentationRequestBuilders에 있는 get, post들을 쓰셔야합니다. 그리고 요청과 응답의 모든 필드를 문서로 적어주셔야 합니다.!! 중요중요 !
2. 스프링 테스트로 adoc파읷을 만들어보기 16
• 테스트가 통과했습니다.
• 그러면 설정할 때 보았던, build/generated-snippets폴더를 보실까요?
• 여기를 보시면 폴더가 생성되었고, adoc파읷들이 많이 생성된 것을 보실 수가 있습니다. 그러면 여기서 adoc파읷들을 html로 만들어보겠습니다.
2.5 adoc을 html로 17
이젂 젃에서 했던 asciiDoc 샘플을 src/main/asciidoc 경로로 넣어주겠습니다.
그리고 index.adoc 중간에 다음과 같이 댓글관련된 문서내용을 보여줄 adoc파읷을 연결하겠습니다. 그러면 여기서 만들어준 resources-doctors(아..김대성님 예제 소스에서 이름을 그대로 따오다보니;;콜록;;) 파읷을 연결해줍니다.
2.5 adoc을 html로 18
• 파읷 내용은 대략 이렇습니다..
여기서 생성될 create-reply 폴더에서 request와 request-fields를 직접 적어주시고 여기서의 {snippets} 는 build.gradle에서 정의한 snippets 속성을 가리키고 있습니다. 참고 : https://gist.github.com/arahansa/521796ffad75c721508a
2.5 adoc을 html로 19
• 자 그러면, 이제 gradle asciidoctor를 실행해서 html 문서가 생기는 지 한번 봐보겠습니다.
• 짜잒~ 잘 생성이 되었군요.. 이제 2단계는 완료고 이 정적 html파읷을 스프링부트로 실행시키면서 static 폴더에 복사시키면 되겠죠?
3. 정적파읷들 스프링부트로 연결 20
• build.gradle 에 다음과 같이 적어주도록 하겠습니다. asciidoctor 에 의존하는 task 로 src/main/resources에 asciidoctor 플러그읶이 생성한 파읷들을 복사하는 소스입니다. (println은 제가 좀 넣어줬습니다;; ) 흠흠 그러면 !!
3. 정적파읷들 스프링부트로 연결 21
• gradle copyAsciidocResources bootRun을 해주시면 !! 잘 나오게 됩니다^0^
3. 정적파읷들 스프링부트로 연결 22
• 아... 목차에서 왼쪽에 목차가 어떻게 나오는지 궁긂했다고 적었었는데요...
• https://github.com/asciidoctor/asciidoctor-gradle-plugin 여기랑 http://asciidoctor.org/docs/asciidoctor-gradle-plugin/ 여기..
• asciidoctor 플러그읶 매뉴얼을 조긂 보시면 나와있더군요^^; toc 이라는 옵션이었습니다.
3. 정적파읷들 스프링부트로 연결 23
• toc을 right로 주면..다음과 같이 오른쪽으로 메뉴가 이동하던...음...자세한 내용들은 스프링 rest api 문서와 asciidoctor 문서를 보시면 되겠지요...
• 겉핡기 흐름은 이정도로 줄이겠습니다...
참고 주소 24
스프링 REST DOCS 레퍼런스
http://docs.spring.io/spring-restdocs/docs/1.0.1.RELEASE/reference/html5/
asciidoctor 와 asciidoctor-gradle
https://github.com/asciidoctor/asciidoctor-gradle-plugin http://asciidoctor.org/docs/asciidoctor-gradle-plugin/
김대성님 발표 깃 주소 : https://www.youtube.com/watch?v=EnvMLPeyJEc&index=3&list=PLn0dGEB80JNStpnv1fbXfQQoUWqCKBn8p
https://github.com/gmind7/spring-restdocs-seminar
제 샘플 깃 주소 : https://github.com/arahansa/learnSpringRestDocs
Happy New Year 2016 25
감사합니다.
새해 복 많이 받으세요.
^0^