我想在 swagger.json
中使用 BigDecimal 作为字符串定义一个对象现在我可以做
"MyObject": {
"type": "object",
"properties": {
"amountOfMoney": {
"type": "string",
"pattern": "d+([.]d+)?"
},
"name": {
"type": "string"
}
},
"title": "MyObject"
}
另一种方式,我可以将amountOfMoney定义为数字。
"MyObject": {
"type": "object",
"properties": {
"amountOfMoney": {
"type": "number"
"minimum": 0.0,
"maximum": 100.0,
"exclusiveMinimum": false,
"exclusiveMaximum": false
},
"name": {
"type": "string"
}
},
"title": "MyObject"
}
Java类防护
public class MyObject {
private BigDecimal amountOfMoney;
private String name;
//Getters, setters.
}
如何像第二个示例一样强制执行最小和最大验证?
我们使用springfox 2.8.0。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>2.8.0</version>
</dependency>
我们有配置(作为Spring bean),可以在其中添加替代项。
Docket(DocumentationType.SWAGGER_2)
.select()
.paths(PathSelectors.any())
.build()
.pathMapping("/")
// see https://stackoverflow.com/a/40737219
.directModelSubstitute(MyObject .class, String.class)
我什至可以用BigDecimal
代替String
!我希望该字符串具有格式,以确保我得到的数字介于最小值和最大值之间。
It is not recommended to create BigDecimal来自数字。 Another link
https://swagger.io/docs/specification/data-models/data-types/
Swagger documentation for Spring Pageable interface
例如,日期有字符串格式。我该如何为数字做一个?