Alle Tutorials online sagen, dass Sie "Dist" Ordner von Swagger UI unter "WebContent" platzieren, um die Swagger UI arbeiten zu erhalten.Setup Swagger UI auf Jersey Grizzly
Aber was ist, wenn ich nicht "WebContent" habe ?!
Meine Jersey-Jaxrs-RESTful-Anwendung wird auf dem integrierten Grizzly-Server ordnungsgemäß ausgeführt.
Ich habe Swagger richtig eingerichtet und wenn ich zu localhost:9998/swagger.json
gehe, kann ich alle API-Dokumentation im JSON-Format sehen. Jetzt will ich nur noch die Swagger-Benutzeroberfläche, um diese JSON-Daten in einer schönen HTML-Seite anzuzeigen.
Meine Frage ist, wie kann ich diese Swagger UI ohne WebContent-Ordner und web.xml-Datei einrichten.
Hier ist meine index.html
JS Konfiguration Swagger UI zu starten; die url=http://localhost:9998/api/api-docs/swagger.json
Meine Anwendungskonfiguration:
@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", "");
}
}
Es eine offene Frage zu diesem Problem bei https://github.com/swagger-api/swagger-core/issues/958 war; Es wurde jedoch nicht gelöst.