Swagger-Core JAX-RS Project Setup (KOR)


본 문서는 Swagger Core JAX RS Project Setup 1.5.X을 적용하면서 얻은 경험을 기술합니다.
원본의 내용과는 다른 부분이 있습니다.

references

dependency

swagger-jersey2-jaxrs가 아닌 swagger-jarx를 추가한다.

<dependency>
  <groupId>io.swagger</groupId>
  <!--artifactId>swagger-jersey2-jaxrs</artifactId-->
  <artifactId>swagger-jaxrs</artifactId>
  <version>1.5.4</version>
  <scope>compile</scope>
</dependency>

WorldApplication

이 부분은 어쩔 수 없이 모든 리소스 클래스와 swagger와 관련된 클래스 두개를 추가했다.

@ApplicationPath("/api")
public class WorldApplication extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> classes = new HashSet();
        // add my own resource classes here
        classes.add(ApiListingResource.class);
        classes.add(SwaggerSerializers.class);
        return classes;
    }
}

BeanConfiguration

Target environment를 구분하기 위해 다음과 같이 json파일을 하나 생성하고 Jackson을 통해 읽어드린다.

{
  "basePath": "${swagger.config.basePath}",
  "description": "description",
  "host": "${swagger.config.host}",
  "resourcePackage": "com.github.jinahya.mysql.world.ws.rs",
  "scan": true,
  "schemes": [${swagger.config.schemes}],
  "version": "${api.version}",
  "info": {
    "title": "MySQL World Database API"
  }
}
public WorldApplication() {
    super();
//        BeanConfig beanConfig = new BeanConfig();
//        beanConfig.setTitle("world");
//        beanConfig.setVersion("1.0.0");
//        beanConfig.setSchemes(new String[]{"http"});
//        beanConfig.setHost("localhost:8080");
//        beanConfig.setBasePath("world/api");
//        beanConfig.setResourcePackage("com.github.jinahya.mysql.world.ws.rs");
//        beanConfig.setScan(true);
    final ObjectMapper mapper = new ObjectMapper();
    try {
        mapper.readValue(
            getClass().getResource("/bean-config.json"), BeanConfig.class);
    } catch (final IOException ioe) {
        ioe.printStackTrace(System.err);
    }
}

Swagger-UI

swagger-uisrc/main/webapp 아래에 복사하고 다음과 같이 filtering를 준비한다.

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
      $(function () {
        var url = window.location.search.match(/url=([^&]+)/);
        if (url && url.length > 1) {
          url = decodeURIComponent(url[1]);
        } else {
          url = "${app.contextUrl}/swagger.json";
        }
    </script>
  </head>
</html>
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s