개발공작소
article thumbnail
728x90

 

 

 

 

이번에 전자정부프레임워크에 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

 

수정해야 할 사항이 몇개 있다. 그건 다음 글에서 정리해보겠다

 

.

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!