SpringDoc-如何以编程方式添加架构

时间:2020-05-11 12:00:32

标签: spring-boot schema springdoc springdoc-openui

我正在使用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")));

以下错误显示在大摇大摆的用户界面中:

解析器错误位于 路径。/XX/v1/test/status/{entry}.get.responses.404.headers.XxX.$ref 无法解析参考:无法解析指针: / components / schemas / MySchema

请,您能帮我理解吗?

编辑: 我正在使用1.3.9

2 个答案:

答案 0 :(得分:1)

您的架构似乎已被自动生成的架构所取代。试试这个:

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

        var schemas = openApi.getComponents().getSchemas();
        schemas.put(mySchema.getName() , mySchema);
    };
}

答案 1 :(得分:0)