BigDecimal как String в определении Swagger - PullRequest
0 голосов
/ 13 февраля 2019

Я хотел бы определить объект с BigDecimal как String в swagger.json

Прямо сейчас я могу сделать

"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), где яможно добавить замену.

Docket(DocumentationType.SWAGGER_2)
    .select()
    .paths(PathSelectors.any())
    .build()
    .pathMapping("/")
    // see https://stackoverflow.com/a/40737219
    .directModelSubstitute(MyObject .class, String.class)

Я даже могу использовать замену BigDecimal на String!Я хотел бы иметь формат для этой строки, чтобы гарантировать, что я получу числа от мин до макс.

Не рекомендуется создавать BigDecimal из чисел. Другая ссылка

https://swagger.io/docs/specification/data-models/data-types/

Документация Swagger для интерфейса Spring Pageable

Например, существует строковый формат для дат,Как мне сделать один для чисел?

...