当前位置: 首页 > 知识库问答 >
问题:

使用泽西岛资源配置的 Swagger 的自定义应用程序类设置

昌乐生
2023-03-14

我正在按照泽西岛2.X项目设置指南(https://github.com/swagger-api/swagger-core/wiki/swagger-Core-Jersey-2.X-项目-安装-1.5#使用自定义应用程序子类)执行以下步骤。我遇到了“自定义应用程序”子类的问题,该子类提供了下面的示例代码:

public class SampleApplication extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new HashSet();

        //resources.add(FirstResource.class);
        //resources.add(SecondResource.class);
        //...

        resources.add(io.swagger.jaxrs.listing.ApiListingResource.class);
        resources.add(io.swagger.jaxrs.listing.SwaggerSerializers.class);

        return resources;
    }
}

我们的项目与上面提供的示例不同,因为它扩展了一个泽西ResourceConfig类,而不是直接扩展Application类。问题是ResourceConfig类本身覆盖了getClass()方法并声明它是最终的。

你知道解决这个限制的方法吗?

我们的代码:

@ApplicationPath("/")
public class testProj extends ResourceConfig {
    public testProj (){
        property("jersey.config.beanValidation.enableOutputValidationErrorEntity.server", "true");

    }
}

请帮我提供昂首阔步的步骤/示例/示例代码?

提前感谢。

共有1个答案

胡承悦
2023-03-14

我在Jersey ResourceConfig中使用了一个扩展的BeanConfig类:

public class ExtBeanConfig extends BeanConfig {

    Set<Class<?>> resources = new HashSet<Class<?>>();

    public ExtBeanConfig(Set<Class<?>> resources) {
        super();
        if (resources != null) {
            this.resources = resources;
        }
    }

    @Override
    public Set<Class<?>> classes() {
        Set<Class<?>> superClasses = super.classes();
        superClasses.addAll(resources);
        return superClasses;
    }
}   

我就是这样在我的ResourceConfig中配置的(myClasses是一组带有Swagger注释的类):

ExtBeanConfig beanConfig = new ExtBeanConfig(myClasses);
beanConfig.setVersion("1.0.0");
beanConfig.setSchemes(new String[]{"http, https"});
beanConfig.setBasePath("/api");
beanConfig.setScan(true);
 类似资料:
  • 我有一个问题,让昂首阔步的博士一代工作。 以下是我使用的专家: 我在ResourceConfig类中添加了swagger ressources: 然后我声明了一个 servlet 来配置 Swagger: 通过上面的配置,可以使用swagger servlet:如果我浏览到api文档url,我会得到以下信息: 但是,如果我使用如下所示的真实配置更改 swagger servlet 配置中的 api

  • 问题内容: 分析了整个互联网,但无法弄清楚为什么会发生这种情况。我有一个最简单的项目(使用jersey-quickstart- grizzly2原型),并且只有一个Jersey资源。我将Guice用作DI,因为CDI也不想与Jersey合作。问题在于,Guice在注入Jersey的资源时无法解析要使用的类。它在外面很好用,但不适用于泽西岛。这是泽西岛的资源: 传输接口: 它的实现: 遵循Googl

  • 我决定在这部分替换Web.XML: 我指向servlet容器Jersey,它将接受对REST-Controllers的请求,表明在启动时有必要扫描路径com . skillsimprover . REST examples . REST上的包REST,并表明资源的所有方法和类的基URI都填充了/api/* 从 JAX-RS 2.x 版本开始,可以使用应用程序类或资源配置类来注册包和资源。 我执行了

  • 我正在做一项创建Jersey客户端的任务。我用的是球衣1.18。目标URL如下所示。 我需要在我的网络资源中添加一个路径参数来调用这个URL。我看到了一个添加查询参数的选项,但没有为路径参数添加选项。我的代码看起来像这样。 谁能帮我一下吗?

  • 我正在尝试将以下有效负载发布到我基于Jersey的web服务: 我的泽西岛代码: 就在Jersey给我打电话的时候,我停下了,我看到了我正在寻找的地址(上面JSON中的内容)。然而,我的数据元组不在那里。我知道Jersey正在为地址es调用我的无参数构造函数,它的setters也在被调用,但是我还没睡,因为Jersey可能会也可能不会尝试对JSON中的这些随机("数据")元组做些什么。(我说“随机

  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?