이번에 전자정부프레임워크에 Swagger-ui를 적용하면서 정리해보려 한다.
구글링 해보니 전자정부프레임워크에 Swagger-ui를 적용하는 글들이 많이 없는 거 같다.
Spring 프로젝트에 Swagger 설치하는 방법
1. Swagger 라이브러리 설치
pom.xml에 dependency를 추가해주도록 하자.
(나는 메이븐 프로젝트로 했음. 그래들 쓰는 사람들은 찾아 쓰도록 하자.)
pom.xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2. SwaggerConfig.java 작성
SwaggerConfig.java
package egovframework.com.cmm.config;
import org.springframework.context.annotation.Bean;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.OperationsSorter;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger.web.UiConfigurationBuilder;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("dip.sjmp"))
.paths(PathSelectors.any())
.build()
.pathMapping("/")
.useDefaultResponseMessages(false)
.apiInfo(apiInfo());
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SAMPLE-API")
.description("샘플 API 입니다.")
.termsOfServiceUrl("coding.toast.co.kr/api/")
.version("1.0.0")
.build();
}
@Bean
public UiConfiguration uiconfig() {
return UiConfigurationBuilder
.builder().operationsSorter(OperationsSorter.ALPHA)
.build();
}
}
여기서 주의 깊게 볼건 apis(RequestHandlerSelectors.basePackage("dip.sjmp")) 인데,
dip.sjmp 패키지 아래의 모든 Controller를 Swagger-ui에서 사용한다는 의미이다.
3. egov-com-servlet.xml 파일 수정
egov-com-servlet.xml
<beans>
<bean id="swaggerConfig" class="egovframework.com.cmm.config.SwaggerConfig"/>
<mvc:resources location="classpath:/META-INF/resources/" mapping="/swagger-ui.html"/>
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>
</beans>
여기는 우리가 작성한 SwaggerConfig.java를 bean객체로 만들고 swagger-ui의 path를 정의한다.
이렇게 하고 서버를 킨 뒤 아래 URL을 입력하면 정상적으로 Swagger-ui를 확인할 수 있다.
결과확인
결과확인을 하기 위해서는 아래 URL을 입력하도록 하자.
URL
아이피:포트/swagger-ui.html
ex) localhost:8080/swagger-ui.html
나같은 경우에는 포트와 Path를 따로 설정해두었기에 아래와 같이 입력했다.
localhost:5049/sjmp/swagger-ui.html
하지만 이렇게 했는데 다음과 같은 에러가 발생한다면
unable to infer base url. this is common when using dynamic
수정해야 할 사항이 몇개 있다. 그건 다음 글에서 정리해보겠다
.