1. 문제상황
API서버를 만들면서 가장 중요한 것중에 하나가 바로 API사용법에 관한 문서를 만들어주는 것입니다. 그런데 API를 만들면 주기적으로 요구에 따라 변경되기 쉽상입니다. 그럴 때마다 문서를 수정하는 것은 엄청나게 피곤한 일일텐데요.
그래서 소스를 기반으로 API문서를 만들어주고 더불어 테스트까지 할 수있는 라이브러리가 있는데요. 그게바로 Swagger 입니다.
2. 해결방안
1. POM 설정
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
2. JavaConfig 추가하기
package com.kartell.dnfapi.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;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
2-1. API 작성하기
@RequestMapping(value = "/{itemName}", method = RequestMethod.GET)
public Map<String, Object> findByItemName(HttpServletRequest request,
HttpServletResponse response,
@PathVariable String itemName){
Map<String, Object> result = itemService.searchItemByName(itemName);
return result;
}
3.확인하기
http://localhost:8080/swagger-ui.html
4.주의할 점
컨트롤러에 Method를 붙여주지 않으면 전부 다 표기되기 때문에 다 표기되지 않도록 할려면 특정 메소드를 붙여주어야 한다.