openapi 3.0 有效的最小值和最大值

2023-11-27

我有下面的模式定义来表示commission amount在我的 openapi 合同中。

commissionAmount:
  type: number
  minimum: -99999.99
  maximum: 99999.99

生成的代码:

@Valid
@DecimalMin("-99999.99") @DecimalMax("99999.99") 
public BigDecimal getCommissionAmount() {
  return commAmt;
}

生成的代码很好并且符合预期。我只是想知道这些是-99999.99 and 99999.99有效值minimum and maximum.

提出这个问题的原因是它没有检查小数部分的限制。例如,我期望12345.678是无效的 ,12345.67已验证。但它将两者标记为有效。

I read @Digits用于检查整数和小数部分的位数限制。我怎么告诉openapi-generator-maven-plugin注释Digits还有?

预期生成的代码:

@Valid
@Digits(integer = 5, fraction = 2)
@DecimalMin("-99999.99") @DecimalMax("99999.99") 
public BigDecimal getCommissionAmount() {
  return commAmt;
}

在 OpenAPI 中指定这一点的方法是使用multipleOf:

commissionAmount:
  type: number
  minimum: -99999.99
  maximum: 99999.99
  multipleOf: 0.01

但是,使用 OpenAPI 生成器不会产生注释为了这。原因是没有javax.validation可以表示的注解multipleOf有效地(想象一下试图表达multipleOf: 0.02- @Digits是不够的)。

但是,您可以创建自己的注释,因为该用户具有:https://github.com/OpenAPITools/openapi-generator/issues/2192#issuecomment-575132233

使用以下注释和验证器:

@Target({METHOD, FIELD})
@Retention(RUNTIME)
@Repeatable(MultipleOf.List.class)
@Constraint(validatedBy = MultipleOfValidator.class)
public @interface MultipleOf {

    double value();

    String message() default "{error.multipleOf}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default { };

    @Target({ METHOD, FIELD })
    @Retention(RUNTIME)
    @Documented
    @interface List {
        MultipleOf[] value();
    }

}
public class MultipleOfValidator implements ConstraintValidator<MultipleOf, Number> {

    private double value;

    @Override
    public void initialize(MultipleOf constraintAnnotation) {
        this.value = constraintAnnotation.value();
    }

    @Override
    public boolean isValid(Number value, ConstraintValidatorContext context) {
        return (value == null) || (value.doubleValue() / this.value) % 1 == 0;
    }

}

然后,您可以分叉生成器并将新注释添加到模板中:https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/Java/beanValidationCore.mustache

像这样的一行:

{{#multipleOf}}@MultipleOf({{multipleOf}}){{/multipleOf}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openapi 3.0 有效的最小值和最大值 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 验证AWS API网关的请求路径参数?

    假设我有一个带有路径的 api and pets and pets pet 现在我正在尝试验证路径 pets 参数 以便只有长度为 6 的字母数字字符的路径才会被验证并处理到后端 lambda 所有其他路径都将被拒绝 我尝试了以下 swag
  • 我可以使用 gmail 作为我网站的 smtp 服务器吗

    您好 我正在尝试建立并运行一个网站 它目前托管在 AWS 上 因此我目前没有运行自己的 smtp 服务器 所以在阅读了几篇文章后 我了解到我们可以使用gmail作为smtp服务器 我想仔细检查我读到的内容是否正确 我将使用智能求职板软件 我
  • 在C++ Win32中创建透明窗口

    我正在创建一个非常简单的 Win32 C 应用程序 其唯一目的是仅显示半透明的 PNG 窗口不应该有任何镶边 并且所有不透明度都应该在 PNG 本身中控制 我的问题是 当窗口下的内容发生变化时 窗口不会重新绘制 因此 PNG 的透明区域与应
  • 从互联网下载 SQLite 数据库并加载到 Android 应用程序中

    对于我的 Android 应用程序 我想使用一个大型数据库 大约 45 MB 一种解决方案是将 拆分的 数据库包含在资产文件夹中 并在第一次启动时将其复制到数据库目录 但这会消耗两次磁盘空间 一次在无法删除文件的资产文件夹中 一次在文件已复
  • 在DLL接口中使用boost::shared ptr可以吗?

    在 C 中开发一个返回 boost 共享指针并将其用作参数的 DLL 是否有效 那么 这样导出函数可以吗 1 boost shared ptr
  • 竞技编程中的快速输入/输出

    我在竞争性编程竞赛的解决方案中多次遇到过这个特定的代码片段 我了解此代码的基本用途来克服时间限制 但我想更深入地了解它 我知道 unistd h 可以访问系统调用包装函数 例如 fork pipe 和 I O 原语 读 写等 如果有人可以解
  • 如何创建 GUI 并以编程方式对 Cocoa 事件做出反应?

    我发现了如何以编程方式在 Cocoa 中创建一个窗口 但不知道如何对事件做出反应 该窗口不对退出请求或按钮单击做出反应 我尝试添加以下控制器并使用 setDelegate setTarget 但没有运气 interface AppContr
  • 使用 hibernate 以编程方式验证架构

    在大多数项目中 运行你的方法java app模式验证是使用该配置 使用 spring 时 spring jpa hibernate ddl auto validate 我遇到了一个问题 我需要在运行期间的特定时间验证我的架构 有什么方法可以
  • 如何在 Python Git hook 中使用 raw_input() ?

    我正在为 Git 编写一个预提交钩子 它运行 pyflakes 并检查修改文件中的制表符和尾随空格 Github 上的代码 我想通过请求用户确认来覆盖钩子 如下所示 answer raw input Commit anyway N y if
  • try catch 块的成本是多少?

    好多少是 if condition try something catch SomeEx ex 而不是这个 try if condition something catch SomeEx ex 当我进入 try 块时 JVM 实际上会做什么
  • 动画按钮允许用户交互不起作用

    我在 NSObject 类的代码中创建了一个 UIbutton 它控制 UIViewController 类中的游戏 该按钮在游戏的大部分时间都工作正常 但在某个时刻我希望按钮淡入 淡出 一旦淡入 淡出开始动画 按钮就不再具有交互性 我已经
  • 从 json 创建 DynamoDB 表

    我想知道是否可以从表定义 json 本身创建 dynamodb 表 我研究了 aws cli 工具 但找不到任何方法来执行此操作 只是想知道是否可能 aws dynamodb create table file tabledenifisio
  • 如何将 mySql SQL 脚本转换为 MS SQL 脚本?

    我必须将客户 MySql 数据库架构 数据迁移到 MS SQL SERVER 2008 最后我收到了 70 Mb SQL 文件 其中包含与 MSSQL 不兼容的 mySQL 方言 DROP TABLE IF EXISTS kladr CRE
  • Facebook 登录与 CSRF 状态令牌不匹配的问题

    我做了一些搜索 但没有找到与我的问题相关的任何内容 我目前正在尝试对我的网站实施 Facebook 登录 但由于 htaccess mod 重写 URL 我在登录身份验证方面遇到了问题 该代码工作完美 如果我在没有 mod 重写规则的情况下
  • c从 R 中的字符串绑定动态列名

    我想将一列绑定到数据框 并使用从字符串动态分配的列名称 y attribute Survived cbind test data y attribute NA 这会导致新列添加为y attribute而不是所需的Survived属性以字符串
  • Mockito 空指针异常

    我遵循了 hoaz 的建议 但是 我遇到了空指针异常 RunWith MockitoJUnitRunner class public class GeneralConfigServiceImplTest InjectMocks privat
  • Perl 可以“静态”解析吗?

    An 文章名为 Perl 无法解析 形式化证明 正在巡视 那么 Perl 是否在 运行时 或 编 译时 决定其解析代码的含义 在我读过的一些讨论中 我的印象是这些论点源于不精确的术语 所以请尝试在答案中定义您的技术术语 我故意没有定义 运行
  • 如何将列表中的随机值分配给 pandas 数据框中的列?

    我正在 Bigquery 中使用 Python 并且有一个大型数据帧 df 大约 700 万行 我还有一个列表 lst 包含一些日期 例如给定月份的所有日期 我正在尝试在 df 中创建一个附加列 random day 并使用每行中 lst
  • HTTPS 到 HTTPS 重定向 Nginx

    如何将一个 HTTPS 重定向到另一个 HTTPS 我只有一个域的一个 SSL 证书 例如 如何重定向https example org to https example com 我已经尝试搜索谷歌和其他论坛 但没有发现任何效果 这非常容易
  • openapi 3.0 有效的最小值和最大值

    我有下面的模式定义来表示commission amount在我的 openapi 合同中 commissionAmount type number minimum 99999 99 maximum 99999 99 生成的代码 Valid