2

I would like to define an object with BigDecimal as String in swagger.json

Right now I can do

"MyObject": {
  "type": "object",
  "properties": {
    "amountOfMoney": {
       "type": "string",
       "pattern": "d+([.]d+)?"
    },
    "name": {
      "type": "string"
    }
  },
  "title": "MyObject"
}

Another way, I can Define amountOfMoney as a number.

"MyObject": {
  "type": "object",
  "properties": {
    "amountOfMoney": {
      "type": "number"
      "minimum": 0.0,
      "maximum": 100.0,
      "exclusiveMinimum": false,
      "exclusiveMaximum": false
    },
    "name": {
      "type": "string"
    }
  },
  "title": "MyObject"
}

Java class defention

public class MyObject {

    private BigDecimal amountOfMoney;
    private String name;

    //Getters, setters.
}

How do I enforce minimum and maximum validation, like in the second example?

Update

We use 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>

We have configuration (as a Spring bean), where I could add a substitute.

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

I can even use substitute BigDecimal by String! I would like to have format for that string to ensure I will get numbers between min and max.

It is not recommended to create BigDecimal from numbers. Another link

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

Swagger documentation for Spring Pageable interface

For example, there is string format for dates. How do I make one for numbers?

Yan Khonski
  • 9,178
  • 13
  • 52
  • 88

0 Answers0