모든 온라인 자습서에서는 Swagger UI의 "dist"폴더를 "WebContent"아래에 두어 Swagger UI를 작동시켜야한다고 말합니다.Jersey Grizzly에서 Swagger UI 설정
"WebContent"가 없으면 어떻게 될까요?!
My Jersey-Jaxrs-RESTful 응용 프로그램이 내장 된 Grizzly 서버에서 올바르게 실행됩니다.
Swagger를 올바르게 설정했으며 localhost:9998/swagger.json
으로 갈 때 JSON 형식의 모든 API 문서를 볼 수 있습니다. 자, 내가 원하는 건 Swagger UI로이 JSON 데이터를 멋진 HTML 페이지에 표시하는 것입니다.
내 질문은 WebContent 폴더 및 web.xml 파일없이이 Swagger UI를 설정하는 방법입니다.
여기 Swagger UI를 시작하는 나의 index.html
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", "");
}
}
; 그러나 그것은 해결되지 않았습니다.