Swagger

민지킴·2021년 3월 10일

스웨거란?

스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다.

Swagger가 유용하게 사용되는 경우

다른 개발팀과 협업을 진행할 경우
이미 구축되어있는 프로젝트에 대한 유지보수를 진행할 경우
백엔드의 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> 

SwaggerConfig.java

@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();
	}

}

Controller에 적용

	@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

profile
하루하루는 성실하게 인생 전체는 되는대로

0개의 댓글