본문 바로가기

Spring

Spring) Swagger? 너 뭔데? 어떻게 쓰는데?


Swagger란?

서버로 요청되는 URL 리스트를 HTML화면으로 문서화 및 테스트를 할 수 있는 라이브러리 

 

사용 이유 

적용 하기가 매우 간단(Spring REST Docs 등의 문서화 도구와 달리 코드 몇 줄만 추가하면 만들 수 있고

문서 화면에서 API를 바로 테스트 할 수 있음.

 


사용 하기

  • build.gradle에 의존성 추가
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'

 

 

  • SwaggerConfig class 생성
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private String version = "V0.1";

    @Bean
    public Docket apiBoard() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)         //불필요한 응답코드와 설명 제거
                .groupName("board")                              //Bean이 여러개일 때 명시
                .select()                                        //ApiSelectorBuilder를 생성하여 apis()와 paths()를 사용
                /*.apis(RequestHandlerSelectors.any())*/         // api가 작성되있는 패키지를 지정
                .apis(RequestHandlerSelectors.                   // api가 작성되있는 패키지를 지정
                        basePackage("com.example.sokdak.board.controller"))
                .paths(PathSelectors.any())                      //URL 경로를 지정하여 해당 URL에 해당하는 요청만 Swagger API 문서로 만듬
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("제목")
                .description("설명")
                .version(version)
                .build();
    }

}
  • useDefaultResponhseMessages() - false 로 설정시 Swagger에서 제공해주는 응답 코드에 대한 기본 메시지 제거
  • groupName() - Docket Bean 이 한개인경우 생략 가능 / 둘 이상일 경우 
  • select() - ApiSelectorBuilder를 생성하여 apis(),paths()를 사용 할 수 있게 해준다.
  • apis() - api가 작성되어 있는 패키지 지정 / basepackage로 지정하여 해당 패키지에 존재하는 api 문서화
  • paths() - apis() 로 선택되어진 api중 path 조건에 맞는 api들을 필터링하여 문서화 한다.
  • apiInfo() - 제목, 설명 등 문서에 대한 정보 설정

코드 작성 완료 > http://localhost:8080/swagger-ui.html 로 들어가면 문서화된 api 화면 확인 가능


에러 발생

 

 

application.properties 에 

# Swagger
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

추가~



Calendar
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
더보기
Archives
Visits
Today
Yesterday