オンラインのすべてのチュートリアルでは、Swagger UIの「dist」フォルダを「WebContent」の下に置き、Swagger UIを機能させるべきだと言っています。Jersey GrizzlyでSwagger UIを設定する
"WebContent"がないとどうなりますか?
My Jersey-Jaxrs-RESTfulアプリケーションは、組み込みのGrizzlyサーバーで正しく動作します。
Swaggerを正しくセットアップしました。localhost:9998/swagger.json
にアクセスすると、すべてのAPIドキュメントがJSON形式で表示されます。さて、私が欲しいのは、このJSONデータを素敵なHTMLページに表示するSwagger UIです。
私の質問は、WebContentフォルダとweb.xmlファイルなしでこのSwagger UIを設定する方法です。
ここに私のindex.html
スワッガーUIを開始するJS設定です。 url=http://localhost:9998/api/api-docs/swagger.json
マイアプリケーション構成:https://github.com/swagger-api/swagger-core/issues/958でこの問題に関する未解決の問題がありました
@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", "");
}
}
。しかし、それは解決されませんでした。