【发布时间】:2016-11-17 10:28:39
【问题描述】:
所有在线教程都说您应该将 Swagger UI 中的“dist”文件夹放在“WebContent”下,以使 Swagger UI 正常工作。
但是如果我没有“WebContent”怎么办?!
我的 Jersey-Jaxrs-RESTful 应用程序在嵌入式 Grizzly 服务器上正常运行。
我已经正确设置了 Swagger,当我转到 localhost:9998/swagger.json 时,我可以看到 JSON 格式的所有 API 文档。现在,我想要的只是 Swagger UI 以在漂亮的 HTML 页面中显示此 JSON 数据。
我的问题是如何在没有 WebContent 文件夹和 web.xml 文件的情况下设置此 Swagger UI。
这是我的index.html JS 配置,用于启动 Swagger UI; url=http://localhost:9998/api/api-docs/swagger.json
我的应用程序配置:
@ApplicationPath("api")
public class ResConfig extends Application {
public ResConfig() {
super();
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.2");
beanConfig.setSchemes(new String[] { "http" });
beanConfig.setHost("localhost:9998");
beanConfig.setBasePath("/api");
beanConfig.setResourcePackage("test.resources");
beanConfig.setScan(true);
}
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new HashSet<Class<?>>();
resources.add(Res.class);
resources.add(CrossDomainFilter.class);
resources.add(io.swagger.jersey.listing.ApiListingResourceJSON.class);
resources.add(io.swagger.jaxrs.listing.ApiListingResource.class);
resources.add(io.swagger.jaxrs.listing.SwaggerSerializers.class);
return resources;
}
}
public class CrossDomainFilter implements ContainerResponseFilter {
public CrossDomainFilter() {
}
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
responseContext.getHeaders().add("Access-Control-Allow-Headers", "");
responseContext.getHeaders().add("Access-Control-Allow-Credentials", "");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "");
responseContext.getHeaders().add("Access-Control-Max-Age", "");
}
}
https://github.com/swagger-api/swagger-core/issues/958 上有一个关于此问题的未解决问题;但是没有解决。
【问题讨论】:
标签: java swagger jersey-2.0 swagger-ui grizzly