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

在 Swagger 上向下钻取模型对象

柳德义
2023-03-14

我的应用程序是一个Rest的api,它与Swagger和OpenAPI集成。我已经使用OpenAPI YAML文件生成了所有Java存根,一切都正常。但是当我尝试在Swagger上钻取模型对象时,它无法找到一些对象,尽管项目的一部分编译良好。

如下面的屏幕截图所示,向下钻取无法找到配置对象。

有什么解决办法吗?

编辑:

我有一个 restful 网络服务,我使用 openapi 生成器插件从 YAML 文件生成所有 java 存根 [数据传输对象]。该插件自动生成一个类OpenAPIDocumentationConfig,以下是该类的详细信息。完成此设置后,将在 Swagger UI 中自动生成模型。还想补充一点,我正在使用 OpenAPI 3.0,但我需要将对象定义拆分为多个文件。所以我使用定义来指代它们,因为我不相信组件架构可以拆分为多个文件。

@Configuration
@EnableSwagger2
public class OpenAPIDocumentationConfig {

ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("ABC Service")
        .description("ABC Service")
        .license("")
        .licenseUrl("http://unlicense.org")
        .termsOfServiceUrl("")
        .version("1.0.0")
        .contact(new Contact("","", "xyz@abc.com"))
        .build();
}

@Bean
public Docket customImplementation(ServletContext servletContext, @Value("${openapi.studioVALService.base-path:}") String basePath) {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
                .apis(RequestHandlerSelectors.basePackage("com.x.y.z"))
                .build()
            .pathProvider(new BasePathAwareRelativePathProvider(servletContext, basePath))
            .directModelSubstitute(java.time.LocalDate.class, java.sql.Date.class)
            .directModelSubstitute(java.time.OffsetDateTime.class, java.util.Date.class)
            .apiInfo(apiInfo());
}

class BasePathAwareRelativePathProvider extends RelativePathProvider {
    private String basePath;

    public BasePathAwareRelativePathProvider(ServletContext servletContext, String basePath) {
        super(servletContext);
        this.basePath = basePath;
    }

    @Override
    protected String applicationPath() {
        return  Paths.removeAdjacentForwardSlashes(UriComponentsBuilder.fromPath(super.applicationPath()).path(basePath).build().toString());
    }

    @Override
    public String getOperationPath(String operationPath) {
        UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath("/");
        return Paths.removeAdjacentForwardSlashes(
                uriComponentsBuilder.path(operationPath.replaceFirst("^" + basePath, "")).build().toString());
    }
}

}

编辑2:

我将所有定义都移到了组件和架构中,但它们仍然被拆分为多个文件,并且引用了跨文件的组件,但仍然收到相同的错误。

共有1个答案

施凡
2023-03-14

如果您使用的是 OpenAPI 3,则应将要重用的架构放在组件中。要引用它,您必须使用如下引用:

$ref: "#/components/schemas/EquityOptionConfigurationDO"
 类似资料:
  • 问题内容: 我一直在我的angularjs项目中使用highcharts- ng。一切都做得不错,但是现在我需要使用一些钻取来详细说明我的信息,并且无法使用drilldown.js正常工作。我遵循了在highcharts的向下钻取小提琴上给出的示例,但似乎与angular- ng无关。如您在我的向下钻探复制中所见,原始的Highchart示例不适用于angular- ng 。有什么问题的想法吗?

  • Highcharts 饼图 以下实例演示了向下钻取饼图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。 配置 drilldown 配置 drilldown 用于向下钻取数据,通过点击某项深入到其中的具体数据。 drilldown: { series: drilldownSeries } 实例 文件名:highcharts_pie_dril

  • 我正在尝试为Swagger中的项目获取模型模式。我想通过一个http请求来实现这一点,该请求来自不同于托管Swagger的机器。 我可以从以下位置获取作为json的Swagger API文档: 该响应包含: 是否有任何方法获取“/definitions/Item”模型模式? 我想做一个http获取,比如: 我使用的是Swagger 2.0版。 谢谢

  • 因为普罗米修斯是一个基于牵引的度量跟踪器。 现在假设我有一个简单的服务,我需要为Prometheus提供度量,现在我用该语言的一个客户机来做,将Prometheus配置为以15秒的频率轮询,这个度量API现在我有一个计数度量,Prometheus服务器在时间实例在时间t看到计数x,在时间t+15看到计数y 现在,由于报废间隔(拉动模型),我不知道计数x到y的增加是否有一个稳定的斜率,或者在t+10

  • 钻取是改变展现数据维度的层次,变换分析的粒度。它包括向上钻取(drillup)和向下钻取(drilldown)。 Highcharts 在 3.0.8 开始提供内置的钻取功能功能,使用钻取功能需要额外的引入相关的模块文件 <script src="http://cdn.hcharts.cn/highcharts/modules/drilldown.js"></script> 一、基础的使用 下钻

  • Im使用swagger和spring boot为我的对象自动生成API文档。但是,我正在使用@JSONanyGetter@JSONanySetter动态地向我的json响应添加字段。如 产生:

  • 本文向大家介绍Java 向上转型和向下转型的详解,包括了Java 向上转型和向下转型的详解的使用技巧和注意事项,需要的朋友参考一下  Java 向上转型和向下转型的详解 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。 向上转型:子类引用的对象转换为父类类型称为向上转型。通

  • 本文向大家介绍面向对象的数据模型,包括了面向对象的数据模型的使用技巧和注意事项,需要的朋友参考一下 面向对象的数据模型基于现实情况。这些情况表示为具有不同属性的对象。所有这些对象之间都具有多个关系。 面向对象的数据模型的要素 对象 现实世界中的实体和情况在面向对象的数据库模型中表示为对象。 属性和方法 每个对象都有某些特征。这些使用属性表示。对象的行为使用“方法”表示。 类 使用类将相似的属性和方