java - 如何为 java swagger api 创建一个可重用的字段
问题描述
我有一个接受 java 对象的 java spring boot rest 控制器。
@PutMapping(path = "api/v1/examples/{id}/update")
public ResponseEntity<Void> updateExample(@PathVariable("id") String personsId, @RequestBody ExampleDto dto) {
return ResponseEntity.noContent().build();
}
ExampleDto 看起来像这样
public class Example {
@ApiModelProperty(example = "2021-02-18T13:45:07+02:00", notes = "Date pattern is yyyy-MM-dd'T'HH:mm:ssZ example value 2021-02-18T13:45:07+02:00")
private ZonedDateTime date;
public String getDate() {
return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
}
public void setDate(String date) {
this.date = ZonedDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
}
这是我喜欢的方式。它正确生成了 swagger 文件,并且在 swaggerui 中它建议了我的 dto 可以使用 setDate(String date) 方法解析的正确值。
但我想制作一个可重用的组件,我可以将它添加到我的 api dtos 中,我不必创建所有方法。
如果我想添加多个日期字段,我的代码将如下所示。
public class Example {
@ApiModelProperty(example = "2021-02-18T13:45:07+02:00", notes = "Date pattern is yyyy-MM-dd'T'HH:mm:ssZ example value 2021-02-18T13:45:07+02:00")
private ZonedDateTime date;
public String getDate() {
return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
}
public void setDate(String date) {
this.date = ZonedDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
@ApiModelProperty(example = "2021-02-18T13:45:07+02:00", notes = "Date pattern is yyyy-MM-dd'T'HH:mm:ssZ example value 2021-02-18T13:45:07+02:00")
private ZonedDateTime dateTwo;
public String getDateTwo() {
return dateTwo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
}
public void setDateTwo(String date) {
this.dateTwo = ZonedDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
}
我希望我能做这样的事情。
@Getter
@Setter
public class Example {
private MyDateType date;
private MyDateType dateTwo;
}
我已经可以做到这一点。但后来我的 json 看起来像这样。
{
"date": {
"innerDate": "2021-02-18T13:45:07+02:00"
},
"dateTwo": {
"innerDate": "2021-02-18T13:45:07+02:00"
},
}
我希望 json 看起来像这样
{
"date": "2021-02-18T13:45:07+02:00",
"dateTwo": "2021-02-18T13:45:07+02:00"
}
解决方案
推荐阅读
- plotly - 在python中的等值线地图上添加位置点
- ios - 我应该在用于 OBDII 的 BLE IOS 设备中使用什么 BLE 特性
- javascript - 如何从包含脚本标记的 html 代码段创建 iframe
- assembly - 将 [symbol + constant] Intel 语法寻址模式转换为 AT&T 语法?
- node.js - 使用 jwt 将标头渲染到使用节点 js 的另一个页面
- woocommerce - 修改特定 [products] 短代码实例的 HTML
- python - 检查特定列的 n 个连续行,如果它们都大于固定阈值
- python - 将行号添加到输出的每一行 - 我放弃了(不是 python 专业人士)
- node.js - 如何对数据库中表的记录进行版本化?
- sql - 将特定的 MS Access 查询转换为 SQL Server 查询