관리 메뉴

한글창제의 기쁨

Spring boot Swagger 본문

Spring/Spring Boot

Spring boot Swagger

timesurfer 공간지배자 2017.08.31 09:42

안드로이드의 앱개발을 위해 서버를 API 형태로 만들어야 하다보니 API문서를 만들고 테스트할수 있는 환경을 갖추어 주려면 

엑셀이나, Jmeter와 같은 툴을 이용하여 테스트 하여야 했다.

또한 API를 변경할때마다 문서를 변경해주고 최신화 시켜주어야 하는 작업을 해야 한다. 


Swagger는 간단한 설정으로 프로젝트에서 지정한 Annotation을 이용하여 API를 보고 테스트 할 수 있는  Web UI 환경을 제공해 준다.

(공식 사이트  https://swagger.io/)

Springboot 에서는Springfox 를사용한다. 


1. 의존성 추가

Gradle

compile('io.springfox:springfox-swagger-ui:2.7.0')

compile('io.springfox:springfox-swagger2:2.7.0')


Maven

<dependency>

    <groupId>io.springfox</groupId>

    <artifactId>springfox-swagger2</artifactId>

    <version>2.7.0</version>

</dependency>

<dependency>

    <groupId>io.springfox</groupId>

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

    <version>2.7.0</version>

</dependency>


2. Bean 생성

package com.skan.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
*
* Description : RestAPI 설곌르 위한 Swagger 환경 설정
* @author skan
* @since 2017. 8. 28.
* @version
*
* Copyright (C) 2017 by SKAN Corp. All right reserved.
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select().apis(RequestHandlerSelectors.any()) // @RequestMapping 으로 할당된 모든 URL 추출
.paths(PathSelectors.ant("/api/**")) // API 로 시작하는 URL만 필터링
.build();
}
}


3. Spring Security 설정 

resource 파일  ignoring 설정 

@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
web.ignoring().antMatchers("/assest/**","/v2/api-docs", "/configuration/ui", "/swagger-resources", "/configuration/security", "/swagger-ui.html", "/webjars/**");
}


Application Run 후 http://localhost:8080/swagger-ui.html 에서 Swagger UI를 확인한다. 

아직 Annotation으로 지정한 내역이 없기때문에 기본 페이지만 보일 것이다.


@Controller에  다음과 같은 설정을 하고 재구동 하여 확인해보자 

package com.skan.server.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

/**
*
* Description : RestAPI Test Controller
* @author skan
* @since 2017. 8. 28.
* @version
*
* Copyright (C) 2017 by SKAN Corp. All right reserved.
*/
@RestController
@Api(value="v1-feeds")
public class RestTestController {


/**
*
* @return
* @throws Exception
*/
@ApiOperation(value="get feeds with")
@RequestMapping(value="/api/testStringApi",method=RequestMethod.GET)
public String testStringApi() throws Exception {

return "";
}


@ApiOperation(value="테스트 API 입니다.")
@ApiImplicitParams(value=@ApiImplicitParam(name="userId",value="사용자 아이디", required=false , defaultValue="knkcorp" , dataTypeClass=String.class))
@RequestMapping(value="/api/testStringApi2",method=RequestMethod.GET)
public String testStringApi2() throws Exception {

return "";
}
}




저작자 표시
신고

'Spring > Spring Boot' 카테고리의 다른 글

Spring boot Swagger  (0) 2017.08.31
Spring mobile project Boot에 tiles 적용  (0) 2017.02.03
Spring boot  (0) 2016.07.08
0 Comments
댓글쓰기 폼