gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:14:35 28 4
gpt4 key购买 nike

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

在 swagger UI 中显示以下错误:

Resolver error at paths./XX/v1/test/status/{entry}.get.responses.404.headers.XxX.$ref Could not resolve reference: Could not resolve pointer: /components/schemas/MySchema



拜托,你能帮我理解吗?

编辑:
我正在使用版本 1.3.9

最佳答案

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

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

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

关于spring-boot - SpringDoc - 如何以编程方式添加模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61729201/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com