스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다.
다른 개발팀과 협업을 진행할 경우
이미 구축되어있는 프로젝트에 대한 유지보수를 진행할 경우
백엔드의 API를 호출하는 프론트엔드 프로그램을 제작할 경우
기능
API 디자인
API 빌드
API 문서화
API 테스팅
API 표준화
장점
API 정보 현행화 가능
API를 통해 Parameter, 응답 정보, 예제 등 Spec 정보 전달이 용이함
실제 사용되는 Parameter로 테스트 가능
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("AndongBus").description("StationId").build();
}
@Bean
public Docket commonApi() {
return new Docket(DocumentationType.SWAGGER_2).groupName("andong").apiInfo(this.apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("co.kr.smartplusteam.luna.study.controller"))
// 현재 basePackage에 있는 RequestMapping으로 할당된 모든 URL 리스트를 추출한다.
.paths(PathSelectors.ant("/apitest/**"))
// 그 중에 /apitest인것만 선택
.build();
}
}
@RequestMapping(method = RequestMethod.GET, value = "/{stationId}", produces = MediaType.TEXT_PLAIN_VALUE)
@ApiOperation(value = "StationId로 검색 기능", notes = "stationId 값으로 370000001~370000999까지 가능", httpMethod = "GET", produces = "application/json", consumes = "application/json")
// value -> 어떤 건지 설명을 해준다.
// tags -> 따로 분류를 묶을 수 있다.
// notes -> 펼치면 세부적으로 설명을 해준다.
public String callAPI(@PathVariable("stationId") String stationId) {
...
}
ex) 경로 뒤에 /swagger-ui.html 을 붙인다,
localhost:8080/swagger-ui.html