gpt4 book ai didi

java - 带有 ResourceConfig 的 Swagger Core Jersey 2.X

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:46 25 4
gpt4 key购买 nike

我正在尝试为我的应用程序添加 swagger。

我正在遵循本指南 https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5#using-a-custom-application-subclass

但我将 Jersey 配置为 ResourceConfig,如下所示:

    @ApplicationPath("/resources/api")
public class ApiApplication extends ResourceConfig {

public ApiApplication() {
super(MultiPartFeature.class);
packages("my.rest.resources");
register(io.swagger.jaxrs.listing.ApiListingResource.class);
register(io.swagger.jaxrs.listing.SwaggerSerializers.class);

BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.2");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("localhost:8080");
beanConfig.setBasePath("/resources/api");
beanConfig.setResourcePackage("my.rest.resources");
beanConfig.setScan(true);
}
}

这是正确的吗?

没有生成 swagger.json。

根据我的理解,swagger 文件应该位于以下链接 http://localhost/api/api-docs/swagger.json

更新:

将 BasePath 更改为 resources/api

我在 tomcat 日志中也得到以下异常:

    SEVERE: Servlet /XXXXXX threw load() exception
java.lang.NoSuchMethodError: org.reflections.util.ClasspathHelper.forPackage(Ljava/lang/String;[Ljava/lang/ClassLoader;)Ljava/util/Collection;
at io.swagger.jaxrs.config.BeanConfig.classes(BeanConfig.java:189)
at io.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:168)
at my.rest.resources.apps.ApiApplication.<init>(ApiApplication.java:34)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

最佳答案

  1. ApiListingResource (大摇大摆的数据来自哪里)只不过是另一个 JAX-RS( Jersey )资源类。

    @Path("/")
    public class ApiListingResource {
    ...
    @GET
    ...
    @Path("/swagger.{type:json|yaml}")
    public Response getListing(..) {...}
    ...
    }

    因此资源路径将是基础 @ApplicationPath("/resources/api") 和 swagger 资源路径 /swagger.json。因此,您需要访问 /resources/api/swagger.json

  2. 您需要在 BeanConfig 中修复您的基本路径。此基本路径用于为 swagger UI 创建 URL。使用基本路径 "/api" 意味着 URL 数据将导致 UI 访问不存在的 /api/yourresource。基本路径应该是 servlet 上下文(我猜你的情况下没有)和 Jersey 基本路径(/resources/api)的组合。所以将 BeanConfig 基本路径设置为 "/resources/api"

关于java - 带有 ResourceConfig 的 Swagger Core Jersey 2.X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34201846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com