import org.springframework.context.annotation.*;
import springfox.documentation.builders.*;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.ointex.noticeboard"))
.paths(PathSelectors.any())
.build();
}
/*private ApiInfo apiInfo() {
return new ApiInfo(
"Title",
"Description",
"version 1.0",
"https://naver.com",
new Contact("Contact Me", "https://daum.net", "colt@colt.com"),
"Edit Licenses",
"https://naver.com",
new ArrayList<>()
);
}*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("제목 작성")
.version("버전 작성")
.description("설명 작성")
.license("라이센스 작성")
.licenseUrl("라이센스 URL 작성")
.build();
}
}
.apis()는 API 문서를 만들어줄 범위를 지정하는 것이다.
.paths()는 .paths(PathSelectors.ant("api/v1/**")) 와 같이 사용한다.
http://localhost/api/v1/ 하위 경로를 가지는 API에 대해 문서를 생성하는 것이다.
🎯3-1 혹시 이런 에러가 나면?
Cannot resolve symbol 'EnableSwagger2' issue in Spring boot (symbol: class EnableSwagger2)
File > Invalidate Caches..를 선택하여 intelliJ를 재시작합니다.
🎯4. 결과 확인
이제 작업의 결과를 확인할 시간이다. 로컬에서 서버를 띄웠다는 가정 하에 접속하면 되는 URL은 다음과 같다.
http://localhost:8080/swagger-ui.html
혹시 위 URL이 동작하지 않은 경우, Gradle을 참고하면 해결의 실마리를 얻을 수 있습니다.
*Springfox는 버전에 따라 접속 URL이 바뀌니 주의해야한다.
👉 총 정리
최근 관리 중인 API가 동작이 안하여 매우 당황한 경험이 있었습니다. API를 문서로 작성하였기 때문에 개선 이력이 유실되었고 그것에 대해서 인수인계가 잘 안 된 것이죠. 신규 프로젝트를 시작할 때도 API와 Mobile 연동 테스트를 할 때도 애로사항이 있었습니다. 하지만 이제 Swagger를 통해 그 문제들을 해소할수 있을 것 같은 기분이 듭니다.