블로그 이미지
Max.

calendar

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

Notice

2015.09.03 10:49 개발관련

여기저기 인터넷 자료를 보면, 쉽게 될것 같은데 안된다. 해서 정리한다.


먼저 swagger를 통해 하려고 하는 것이 http://petstore.swagger.io/ 여기처럼 만드는 것이다. API를 설명도 하고 테스트도 할수 있는 것인데, 자동 생성 툴을 이용해 해당 사이트를 쉽게 만들어 내면 된다.


크게 두가지를 해야 한다. 첫번째는 API 코드를 통해서 json을 생성하고, 두번째는 해당 UI 사이트 소스(html,js)를 웹서버에 올려야 한다. 후자는 단순히 https://github.com/swagger-api/swagger-ui 에서 소스코드를 내려받고 dist 에 있는 파일들을 웹서버(tomcat같은)에 올려 놓으면 끝이다. /webapp 아래에 적당히 위치하면된다.


이제 첫번째 json만 생성하면 된다. 이것을 생성하기 위해 제목의 springfox swagger2 를 이용하는 것이다. 3가지를 하고 local tomcat을 실행하면, json이 생성된다.


1. maven dependency 추가


<dependency>

   <groupId>io.springfox</groupId>

   <artifactId>springfox-swagger2</artifactId>

   <version>2.1.2</version>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>2.1.2</version>

</dependency>   

<dependency>

   <groupId>com.fasterxml.jackson.core</groupId>

   <artifactId>jackson-databind</artifactId>

   <version>2.5.0</version>

</dependency>

혹시 찾지 못하면, repository를 추가한다.


   <repository>

     <id>jcenter-snapshots</id>

     <name>jcenter</name>

     <url>https://jcenter.bintray.com/</url>

   </repository> 


2. config java 파일 추가 


@Configuration

@EnableWebMvc

@EnableSwagger2

public class SwaggerConfiguration {


@Bean

public Docket api(){

   return new Docket(DocumentationType.SWAGGER_2)

   .select()

   .apis(RequestHandlerSelectors.any())

   .paths(springfox.documentation.builders.PathSelectors.regex("/api/.*"))

   .build()

   .apiInfo(apiInfo());

}

private ApiInfo apiInfo() {

   ApiInfo apiInfo = new ApiInfo("Api Documentation", "Api Documentation", "1.0", "urn:tos",

           "Contact Email", "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0");

   return apiInfo;

}

}

3. webmvc-config.xml에 bean 추가


<mvc:annotation-driven/>

<bean class="xxx.yyy.zzz.config.SwaggerConfiguration" />


이제 tomcat를 실행하면 아래와 같은 로그를 확인하고 json 위치를 호출해 본다. 


INFO ... Mapped "{[/v2/api-docs],methods=[GET]}"  ...

INFO ... Mapped "{[/swagger-resources]}" onto org ...

INFO ... Mapped "{[/configuration/ui]}" onto org. ...

INFO ... Mapped "{[/configuration/security]}" ont ...


로그 대로라면, http://localhost:8008/v2/api-docs 정도가 될것이고, swagger ui 사이트 상단 입력박스에 넣어서 확인할수 있다.


기본적인 연동은 이렇게 하고, 보다 상세한 고급기능은 해당 사이트에서 Reference를 참조하자. 끝.



저작자 표시
신고
posted by Max.
prev 1 1 2 3 4 5 6 7 8 9 ··· 526 next

티스토리 툴바