
스웨거(Swagger)는 개발자가 REST API 서비스를 설계, 빌드, 문서화할 수 있도록 도와주는 오픈 소스 소프트웨어 프레임워크이다.
프로젝트를 진행하다 보면 API 문서를 만들어야 하는 경우가 종종 있다.
그런데 그때마다 API 문서를 만들면서 개발도 하려니 생각보다 시간이 많이 걸렸다.
그래서 개발에 집중하면서 API 문서를 자동하할 수 있게 해주는 Swagger라는 라이브러리를 알게 되어 사용하게 되었다.
<!-- springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- springfox-swager-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
SWagger 기본 설정을 위한 Config 클래스 생성
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(getApiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com"))
.paths(PathSelectors.any())
.build();
}
private ArrayList<ResponseMessage> getArrayList() {
ArrayList<ResponseMessage> lists = new ArrayList<ResponseMessage>();
lists.add(new ResponseMessageBuilder().code(500).message("500Error").build());
lists.add(new ResponseMessageBuilder().code(403).message("403Error").build());
lists.add(new ResponseMessageBuilder().code(401).message("401rror").build());
return lists;
}
public ApiInfo getApiInfo() {
return new ApiInfo(
"Service REST API Documentation",
"REST Api Documentation",
"1.0",
"localhost:8080",
new Contact("unhak","https://velog.io/@unknown89","chldnsgkr7@gmail.com"),
"Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<VendorExtension>());
}
}
@Api(value = "SwaggerController")
@RequestMapping("/v1/api")
@RestController
public class SwaggerController {
@ApiOperation(value = "Swagger Test", notes = "Test Notes")
@GetMapping(value = "/test")
public Map<String, String> selectOneBoard(@ApiParam(name = "first param", value = "first value", required = true) String input) {
Map<String, String> result = new HashMap<>();
result.put("author", "unhak");
result.put("content", "V1 API 내용");
return result;
}
}