问题描述
我正在尝试简化 API 错误响应,因为我总是使用相同的响应类型。
对于我的端点,我添加
@ApiResponse(responseCode = "404",description = "Page not found",ref = "#/components/responses/problemResponse")
return new OpenAPI()
....
// See https://swagger.io/docs/specification/components/
.components(new Components().addResponses("problemResponse",new ApiResponse()
.description("Problem Response")
.content(new Content().addMediaType(
APPLICATION_JSON_VALUE,new MediaType().schema(new Schema().$ref(ProblemResponse.class.getName()))
)
)
)
)
..;
}
我看到引用在端点一侧起作用,但引用现有类型 (class ProblemResponse
) 似乎根本不起作用。
问题
如何在 OpenAPI 的架构定义中引用(就指向而言)现有的 type
(class
,primitive
,enum
)
我尝试过的
我可以让它在原地工作
@Content(mediaType = APPLICATION_JSON_VALUE,schema = @Schema(implementation = ProblemResponse.class))
并尝试使用
new Schema<ProblemResponse>()
有趣的是当我添加
@ApiResponse(responseCode = "400",description = "Bad request",content = {
@Content(schema = @Schema(implementation = ProblemResponse.class))
})
到一个端点一次,实际的全局定义开始工作,所以我引用的每个其他端点
ref = "#/components/responses/problemResponse"
现在将正确显示。这意味着之前,ProblemResponse
不是已知模式的一部分,我通过使用 @Content
引入了它?我将如何以正确的方式做到这一点?
我尝试在 @Schema(name = "ProblemResponse")
类上添加 ProblemResponse
以强制将其作为已知架构引入,因为它尚未在任何端点中用作“响应结果”,这可能是原因我失踪了 - 但这也无济于事。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)