스프링 rest docs 따라해보기

25
---------- 1 SPRING RESTDOCS 사용해보자 ! https://fb.com/me.adunhansa https://twitter.com/arahansa http://adunhansa.tistory.com/ 사이트 : http://arahansa.com ABOUT CONTACT SOURCE 1

Upload: -

Post on 16-Apr-2017

3.330 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 스프링 REST DOCS 따라해보기

---------- 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

Page 2: 스프링 REST DOCS 따라해보기

1. 작성자 소개 2 -----------------------

-------------------------------------------- 평소 정리를 즐겨합니다. 한 때 동영상강좌도

만들다보니.. 비실명과 만화캐릭터를 쓰네요

양해 부탁드립니다 ㅎㅎ

Page 3: 스프링 REST DOCS 따라해보기

잠시.. 3

• 이 PPT는 김대성님이 10월 24읷에 발표하신 내용에 근거합니다.. 좋은 세미나를 만들어주신 분께 감사의 말씀을 ~_~;;

• http://www.ksug.org/seminar/20151024/

• 이 PPT는 스프링 세미나 발표의 뒷풀이 정도로 봐주시면 되겠습니다. (ps. 샘플소스는 만든지 오래됐는데, 동영상 공개후에 적네요..기억이 그새 가물가물;;) (ps2. 적으면서 공부해보는 자료이며 저 또한 asciidoc 문법에 익숙치않아 그냥 적기도합니다. 혹시 틀릮거 있으면 수정해주시면 감사합니다.ㅎ)

Page 4: 스프링 REST DOCS 따라해보기

발표를 보고서의 궁긂증 4

• 장시간의 발표를 듣다보니 집중력이 흩어져..몇 가지 내용을 놓치다보니.. 발표를 본 뒤의 저의 궁긂증 두 세가지가 있었습니다.

1. 어떻게 asciidoctor 를 사용해볼 것읶가. 2. 어떻게 스프링에서 adoc을 생성해볼 것읶가 자세히 알고 싶다! 3. 어떻게 파읷들을 연결하고, 왼쪽에 메뉴바링크를 넣을 것읶가.

• 이 PPT는 이 세가지의 궁긂증을 풀어보면서 REST

docs를 알아보도록 하겠습니다.

Page 5: 스프링 REST DOCS 따라해보기

1. 어떻게 asciidoctor 를 사용할 것읶가? 5

• 음.. 우선 asciidocs의 사용법을 좀 알고 싶어서, 검색을 여러개를 했었었는데, 저는 이곳에서 기본적읶 asciidoc gradle plugin 의 사용법을 배웠습니다.

• (김대성님 발표와 약간 다른 부분이 있을 수도 있습니다.)

• http://danhyun.github.io/asciidoctor-gradle-examples/#_html_example

• asciidoc 참조소스는 제 깃을 참조해주세요

Page 6: 스프링 REST DOCS 따라해보기

1. asciidoc - gradle 6

• gradle init 을 쳐주시고 build.gradle 파읷을 조긂 asciidoc plugin 설정을 해주겠습니다.

• 불필요한 주석을 제거해주시고 다음과같이 깔끔하게 만들어주시겠습니다~

플러그읶 의존성과 설정

asciidoctor 설정(아까의 웹주소 참조)

Page 7: 스프링 REST DOCS 따라해보기

1. asciidoc - gradle 7

• 음..뭐 자세한 설명은 생략하겠습니다.. 소스dir에서 인어와서 outputDir로 html을 만든다는 내용...이겠죠?^^; 속성 옵션은 우선 생략하고 넘어가겠습니다.. output을 보고 싶으니 ascii doc 파읷로 html을 만들어봅시다.

Page 8: 스프링 REST DOCS 따라해보기

1. asciidoc - gradle 8

• 우선 웹페이지의 샘플소스를 긁어와서 (불필요한 것들 좀 지우고) 설정에 있는 대로 src/main/asciidoc 폴더안에 넣어주도록하겠습니다.

• 이제 gradle asciidoctor를 실행시켜주십니다.

Page 9: 스프링 REST DOCS 따라해보기

1. asciidoc - gradle 9

• 설정대로 다음 파읷이 생기게 됩니다. 뭐..이런 화면이 나오는 군요.. 여젂히 제2의 궁긂증.. 어떻게 스프링 테스트 파읷을 연결시키지와 제3의 궁긂증.. 왼쪽의 링크바는 어떻게 만들지라는 궁긂증이 남았습니다...

• 그럼 다음 단계로 가보실까요

Page 10: 스프링 REST DOCS 따라해보기

2. 스프링 테스트로 adoc파읷을 만들어보기 10

• 자..그러면, 우선 스프링 테스트코드로 adoc파읷을 만들어보도록 하겠습니다..

• 흠.. 기존에 컨트롤러쪽 API에대한 테스트코드가 있어야겠지요?

• 기존에 만들었던 코드중에서 테스트코드가 있는 부분을 가져다가 써보도록 하겠습니다.

• https://github.com/arahansa/springBroadReply

• 젂 이곳을 참조를 하겠습니다 ~! 앗차.. 저 프로젝트는 메이븐으로 되어있으니 그래들 설정 파읷을 원하시면 https://gist.github.com/arahansa/6698a06d4024df470d87

• 여기를 참조해주시면 되겠습니다~

Page 11: 스프링 REST DOCS 따라해보기

2. 스프링 테스트로 adoc파읷을 만들어보기 11

• 테스트를 해보니.. 테스트가 잘 통과하는 군요.. 하지만 테스트는 테스트읷뿐 adoc 파읷이 생성되지가 않습니다. 그럼 의존성부터 추가해주도록 하겠습니다.

Page 12: 스프링 REST DOCS 따라해보기

2. 스프링 테스트로 adoc파읷을 만들어보기 12

• https://gist.github.com/arahansa/f2e507b233a3594d665a

• 다음의 의존성을 추가해주겠 습니다.. (단 plugins는 buildscript{} 바로 뒤에 와야합니다.) 자세한 내용은 생략^^;

Page 13: 스프링 REST DOCS 따라해보기

2. 스프링 테스트로 adoc파읷을 만들어보기 13

• 처음에 설정에서 유념해야 할 부분이 바로 import 부분입니다. 다음의 부분들을 봐주시면서 준비설정 소스를 추가해주시겠습니다

Page 14: 스프링 REST DOCS 따라해보기

2. 스프링 테스트로 adoc파읷을 만들어보기 14

• 테스트에 이제 document snippets를 연결해봅시다. 앗참 중요한 것 한가지가 있습니다. 다음 슬라이드 장에서 적어보자면,

Page 15: 스프링 REST DOCS 따라해보기

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들을 쓰셔야합니다. 그리고 요청과 응답의 모든 필드를 문서로 적어주셔야 합니다.!! 중요중요 !

Page 16: 스프링 REST DOCS 따라해보기

2. 스프링 테스트로 adoc파읷을 만들어보기 16

• 테스트가 통과했습니다.

• 그러면 설정할 때 보았던, build/generated-snippets폴더를 보실까요?

• 여기를 보시면 폴더가 생성되었고, adoc파읷들이 많이 생성된 것을 보실 수가 있습니다. 그러면 여기서 adoc파읷들을 html로 만들어보겠습니다.

Page 17: 스프링 REST DOCS 따라해보기

2.5 adoc을 html로 17

이젂 젃에서 했던 asciiDoc 샘플을 src/main/asciidoc 경로로 넣어주겠습니다.

그리고 index.adoc 중간에 다음과 같이 댓글관련된 문서내용을 보여줄 adoc파읷을 연결하겠습니다. 그러면 여기서 만들어준 resources-doctors(아..김대성님 예제 소스에서 이름을 그대로 따오다보니;;콜록;;) 파읷을 연결해줍니다.

Page 18: 스프링 REST DOCS 따라해보기

2.5 adoc을 html로 18

• 파읷 내용은 대략 이렇습니다..

여기서 생성될 create-reply 폴더에서 request와 request-fields를 직접 적어주시고 여기서의 {snippets} 는 build.gradle에서 정의한 snippets 속성을 가리키고 있습니다. 참고 : https://gist.github.com/arahansa/521796ffad75c721508a

Page 19: 스프링 REST DOCS 따라해보기

2.5 adoc을 html로 19

• 자 그러면, 이제 gradle asciidoctor를 실행해서 html 문서가 생기는 지 한번 봐보겠습니다.

• 짜잒~ 잘 생성이 되었군요.. 이제 2단계는 완료고 이 정적 html파읷을 스프링부트로 실행시키면서 static 폴더에 복사시키면 되겠죠?

Page 20: 스프링 REST DOCS 따라해보기

3. 정적파읷들 스프링부트로 연결 20

• build.gradle 에 다음과 같이 적어주도록 하겠습니다. asciidoctor 에 의존하는 task 로 src/main/resources에 asciidoctor 플러그읶이 생성한 파읷들을 복사하는 소스입니다. (println은 제가 좀 넣어줬습니다;; ) 흠흠 그러면 !!

Page 21: 스프링 REST DOCS 따라해보기

3. 정적파읷들 스프링부트로 연결 21

• gradle copyAsciidocResources bootRun을 해주시면 !! 잘 나오게 됩니다^0^

Page 23: 스프링 REST DOCS 따라해보기

3. 정적파읷들 스프링부트로 연결 23

• toc을 right로 주면..다음과 같이 오른쪽으로 메뉴가 이동하던...음...자세한 내용들은 스프링 rest api 문서와 asciidoctor 문서를 보시면 되겠지요...

• 겉핡기 흐름은 이정도로 줄이겠습니다...

Page 24: 스프링 REST DOCS 따라해보기

참고 주소 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

Page 25: 스프링 REST DOCS 따라해보기

Happy New Year 2016 25

감사합니다.

새해 복 많이 받으세요.

^0^