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

SpringDoc-如何以编程方式添加模式

解高昂
2023-03-14

我正在使用SpringDoc,并试图以编程方式向OpenApi添加一个模式,但没有成功。

    @Bean
public OpenAPI customOpenAPI() {
     Schema mySchema = new Schema<Object>();
     mySchema
     .type("object")
     .$ref("#/components/schemas/MySchema")
     .name("MySchema")
     .addProperties("testStr", new StringSchema());

      return new OpenAPI()
            .servers(servers)
            .info(new Info().title(title).version(version).description(description))
            .components(new Components()
                    .addSchemas("MySchema" , mySchema)
            )
            .tags(tags);
}

mySchema的描述没有添加到我在生成的YAML文件中看到的模式列表中,如果我试图引用它:

apiResponses.entrySet().forEach(response -> response.getValue().addHeaderObject("XxX", 
                  new Header().$ref("#/components/schemas/MySchema")));

共有1个答案

苏鸿志
2023-03-14

看起来您的模式正在被自动生成的模式所取代。试试这个:

@Bean
public OpenApiCustomiser openApiCustomiser() {
    return openApi -> {
        var mySchema = new ObjectSchema();
        mySchema.name("MySchema");

        var schemas = openApi.getComponents().getSchemas();
        schemas.put(mySchema.getName() , mySchema);
    };
}
 类似资料:
  • 我正在尝试在Android上添加Wifi网络,我想知道如何连接到不广播其SSID的Wifi网络(它是否有空SSID或带有\0s的清晰SSID)。 这是我目前用于广播其SSID的Wifi网络的内容:

  • 问题内容: 尽管我看过很多类似的问题,但没有找到明确的答案。使用Servlet Spec 2.5,是否可以以编程方式添加Servlet过滤器和映射?首选位置在Servlet.init()或ServletContextListener.contextInitialized()中。 问题答案: 不,不是通过标准的Servlet 2.5 API。这是在Servlet 3.0 中引入的。最好的选择是创建一

  • AndroidR、 属性。selectableItemBackground存在,但如何通过编程将其添加到ImageButton? 此外,我如何在文档中找到答案?这里提到过,但我看不到任何关于它实际如何使用的解释。实际上,我似乎很少发现文档有用,但我希望这是我的错,而不是文档的错。

  • 在新的 AppCompat 库中,我们可以按以下方式对按钮进行着色: 如何在代码中以编程方式设置按钮的色调?我基本上尝试根据一些用户输入实现按钮的条件着色。

  • 如何根据值以编程方式添加起始目标?例如,如果整数变量为0,则我希望启动导航\u main\u countries\u fragment,否则启动导航\u main\u categories\u fragment。 内部

  • Spring非常出色地为注释提供了一个属性。我希望以编程方式提供带有时区的方法。 例如,假设我想在当地时间午夜打开洛杉矶和芝加哥大楼的灯。我想从我的存储库中获取建筑物。 时区可以在运行时提供还是以其他方式注入? 比如: 我知道方法不能接受任何参数,所以以这种方式提供时区是不行的。