如何在swagger规范中表示十进制浮点数?

edqdpe6u  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(3791)

我想在我的API文档中用2位数表示decimal,用1位数表示decimal。我使用的是swagger 2.0,是否有内置的定义类型或任何其他'轮'参数的规格,或者我唯一的选择是使用'x-'扩展?

v64noz0r

v64noz0r1#

OpenAPI(fka Swagger)规范使用JSON Schema的子集来描述数据类型。
如果参数是以数字的形式传递的,你可以按照this Q&A中的建议尝试使用multipleOf

type: number
multipleOf: 0.1     # up to 1 decimal place,  e.g. 4.2
# multipleOf: 0.01  # up to 2 decimal places, e.g. 4.25

然而,由于floating-point math specificsmultipleOf对浮点数的验证可能不可靠。
如果你的数字是作为字符串传递的,你可以为所需的数字格式指定一个正则表达式pattern

type: string
pattern: your_regex

在任何情况下,您也可以在description中口头记录任何限制。

mf98qq94

mf98qq942#

我自己没有尝试过,但尝试创建一个Java Package 器,用你想要的注解标注 Package 字段(在这种情况下,@Digits可能会帮助你),用lombok提供@Getter@Setter,然后使用importMappings和typeMappings来使用你的自定义 Package 器。
举例来说:

@Getter
@Setter
public class MyWrapper {
    @Digits(integer = 1, fraction = 8)
    private BigDecimal bigDecimal;
}

在pom.xml文件中,使用openapi-generator-maven-plugin

<importMappings>
        <importMapping>MyWrapper=my.package.MyWrapper</importMapping>
    </importMappings>
    <typeMappings>
        <typeMapping>number+digits=MyWrapper</typeMapping>
    </typeMappings>

在yaml文件中:

properties:
      myProperty:
        type: number
        format: digits

相关问题