Swagger防御中的BigDecimal作为字符串

时间:2019-02-13 11:42:21

标签: java json swagger bigdecimal

我想在 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

例如,日期有字符串格式。我该如何为数字做一个?

0 个答案:

没有答案