我正在使用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
版
答案 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)