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

RoN*_*Whe 5 schema spring-boot 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);
}
Run Code Online (Sandbox Code Playgroud)

mySchema 的描述未添加到我在生成的 YAML 文件中看到的架构列表中,如果我尝试引用它:

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

swagger UI 中显示以下错误:

paths./XX/v1/test/status/{entry}.get.responses.404.headers.XxX.$ref 处的解析器错误 无法解析引用:无法解析指针:/components/schemas/MySchema

请问您能帮我理解一下吗?

编辑:我正在使用版本1.3.9

小智 6

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

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

        var schemas = openApi.getComponents().getSchemas();
        schemas.put(mySchema.getName() , mySchema);
    };
}
Run Code Online (Sandbox Code Playgroud)