본문 바로가기
[IT]/SpringBoot

[Spring boot] Swagger 설정하기

by dop 2021. 2. 20.

Api를 ui로 간단하게 테스트 할 수 있고, 문서화하여 정리할 수 있는 Swagger를 Spring Boot에서 적용하는 방법입니다.

 

일단, Swagger를 사용하기 위해서는 pom.xml 파일에 dependency를 추가해줘야 합니다.

springfox-swagger2 와 springfox-swager-ui 두 가지를 추가합니다.

<!-- springfox-swagger2 -->
<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger-ui</artifactId>
 <version>2.9.2</version>
</dependency>
<!-- springfox-swager-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>

위와같이 dependency를 추가해주고, SwaggerConfig 이름의 클래스를 생성해줍니다.

@Configuration, @EnableSwagger2 두 가지 어노테이션을 달아줍니다. 그리고 ui를 통해 보여질 기본적인 내용을 지정해 줍니다. 

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("TEST")
                .description("FIRST API")
                .build();
    }

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("example")
                .apiInfo(this.apiInfo()).select()
                .apis(RequestHandlerSelectors.basePackage("com.example.backend.controller"))//controller package name
                .paths(PathSelectors.ant("/api/**")).build();
    }
}

apiInfo는 Swagger-ui에서 메인으로 보여질 내용을 설정합니다.

Docket은 api 의 그룹명이나 이동경로, 보여질 api 가 속한 패키지 등의 자세한 정보를 담습니다.

다음으로 간단한 api를 만듭니다. ApiController라는 이름으로 클래스를 생성하고

@RestController, @RequestMapping("/api/") 두 가지 어노테이션을 추가해줍니다.

여기서 설정한 ("/api/") 주소에 따라 해당 컨트롤러로 데이터를 전달하게 됩니다.

@RestController
@RequestMapping("/api/")
public class ApiController {
    @GetMapping( value = "test", produces = MediaType.TEXT_PLAIN_VALUE)
    @ApiOperation(value = "Test Sample")
    public Object sample(@RequestParam String param) {
        return ResponseEntity.ok(param);
    }
}

api까지 만들었다면 스프링 부트를 실행하고, 웹 브라우저에서 localhost:8080/swagger-ui.html 주소로 접속하면 Swagger에 접속할 수 있습니다.

위와같이 앞서 제작한 api가 정상적으로 나타난다면 Swagger 연동완료!

 

+) 디렉토리 구조입니다.

 

 

728x90