Spring Boot에 Swagger 붙이기

 안녕하십니까.

이번 포스팅에서는 Spring Boot에 Swagger API를 붙이는 방법에 대하여 알아 보려고 합니다.

gradle 설정

gradle을 사용하실 경우 아래의 한줄을 build.gradle의 dependency에 추가해 줍니다.

implementation 'io.springfox:springfox-swagger2:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
 

Maven 설정

Maven을 사용하실 경우 아래의 설정을 추가하시면 됩니다.

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>
 

설정 파일 추가

gradle, maven을 통하여 코드를 불러오셨으면, 이에 따라 swagger 설정을 해야합니다.
다음과 같이 파일을 하나 생성하며 @Bean으로 등록해 주시면 됩니다. 코드는 간단하게 모든 api에 대하여 스웨거를 빌드한다는 내용 입니다.

@Configuration
@EnableSwagger2
public class SwaggerConfig {
 
    @Bean
    public Docket swaggerApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())   
                .paths(PathSelectors.any())           
                .build();
    }
}

 

실행

바로 스프링 빌드를 해주시고 실행해주시면 됩니다. 저는 아래와 같이 API들을 확인할 수 있었습니다.


문서화 하기

스웨거는 테스팅 툴이기 동시에 문서화 툴이기도 합니다. 파라미터에 설명을 넣어주지 않으면 아래와 같이 단순하게 파라미터가 설정이 되는데요. 이를 위해서는 코드에 기입해주어야 합니다.

메소드 문서화

다음과 같이 @ApiOperation 어노테이션을 통해서 Method에 설명을 넣을 수 있습니다.

 @GetMapping("/detail")
 @ApiOperation(value="포트폴리오 디테일 ", notes="디테일 뷰를 리턴해준다.")
 public String detail(Model model, @RequestParam(value = "name", required = false) String name) {
        model.addAttribute("details", portfolioService.getDetail(name));
        model.addAttribute("name", name);
        return "portfolio/detail";
 }


위의 빈을 넣으시면 아래와 같이 설명이 추가 됩니다.

DTO 문서화

DTO도 문서화해야할 필요성이 있는데요. 아래와 같이 @ApiModelProperty를 통해서 처리할 수 있습니다.

public class PortfolioDetailDTO {

 

    @ApiModelProperty(example = "포트폴리오 타입 이름.")

    public String name;

}


업로드 중: 총 24741바이트 중 24741바이트가 업로드되었습니다.
위처럼 넣을 경우 다음과 같이 추가가 됩니다.

파라미터 문서화

전달하는 파라미터의 주석도 필요할 수 있습니다.

  @GetMapping("/detail")

  @ApiOperation(value = "포트폴리오 디테일 ", notes = "디테일 뷰를 리턴해준다.")

  public String detail(Model model, @RequestParam(value = "name", required = false) @ApiParam(value = "name", example = "이름") String name) {

        model.addAttribute("details", portfolioService.getDetail(name));

        model.addAttribute("name", name);

        return "portfolio/detail";

  }

위처럼 name에 값을 넣을 경우 아래와 같이 value값에 들어간 것을 확인할 수 있습니다.

API 테스트 하기

테스트 하는 법은 간단합니다. 다음과 같이 파라미터에 값을 넣어주시고 Try it out! 버튼을 클릭하시면 바로 테스트가 가능 합니다.




댓글

이 블로그의 인기 게시물

고려대학교 야간대학원 중간 후기

포켓몬 고 17셀 확인 포고맵 사용 방법

HTTP 오류 500.19 - Internal Server Error 에러 처리법