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
추가~
'Spring' 카테고리의 다른 글
Spring) Filter, Interceptor, AOP 차이 (0) | 2023.02.23 |
---|---|
Spring) DI(의존성 주입)의 3가지 방식 (0) | 2023.02.22 |
Spring) Spring AOP & 프록시 패턴 (0) | 2022.12.14 |
Spring) 프록시 , 즉시로딩 지연로딩 (0) | 2022.12.09 |
Spring) 연관관계 매핑 (1) | 2022.12.08 |