- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 Spring Boot 应用程序,它有一个 REST 端点来返回一个“Job”对象,该对象包含一系列多态性,旁边还有其他内容。我们采用“代码优先”方法并尝试创建 API 模型来满足我们的需求。但生成的 Api 文档并不代表我们模型的全部复杂性,因为它无法解析多态列表。
Job 对象看起来像
@Data // Lombok Getters and Setters
public final class Job {
private String foo;
private String bar;
private List<Condition> conditionList;
}
Condition 是一组不同条件的父对象
public abstract class Condition {
}
条件的两个示例实现是
@Data
public final class Internal extends Condition {
private String nodeId;
}
和
@Data
public final class Timed extends Condition {
private ZonedDateTime timestamp;
}
REST Controller 非常简单:
@RestController
@RequestMapping("/hello")
public class MyController {
@GetMapping
public ResponseEntity<Job> getJob() {
return new ResponseEntity<>(new Job(), HttpStatus.OK);
}
}
现在,当我打开 Swagger UI 并查看生成的定义时,元素 conditionList
是一个空对象 {}
我尝试在分类上使用@JsonSubTypes和@ApiModel,但输出没有任何区别。我可能没有正确使用它们,或者 Swagger 无法完成工作,或者我只是盲目或愚蠢。
如何让 Swagger 将子类型包含到生成的 api 文档中?
最佳答案
我们通过改变结构“解决”了这个问题。所以这更像是一种解决方法。
我们现在使用“容器”类,而不是使用多态列表,该类包含每种类型作为其自己的类型。
Condition 对象变成了“容器”或“管理器”类,而不是列表。在 Job 类中,该字段现在定义为:
private Condition condition;
Condition 类本身现在是
public final class Condition{
private List<Internal> internalConditions;
// etc...
}
例如,Internal 丢失了它的父类型,现在只是
public final class Internal{
// Logic...
}
Swagger 生成的 JSON 现在看起来像这样(摘录):
"Job": {
"Condition": {
"Internal": {
}
"External": {
}
//etc...
}
}
关于java - Springfox/Swagger 不解析多态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55728949/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!