java - 在 OpenAPI 中指定一个集合

我正在使用 OpenAPI/Swagger 来指定我的 API。

我找不到的一件事是如何指定一个集合。

我正在使用 https://editor.swagger.io/然后我输入了整个 API。对于我想指定为 Set 的属性,我编写了以下内容:

   myProperty:
      uniqueItems: true
      type: array
      description: some description
      items:
        type: string

我猜想 uniqueItems 可以解决问题并生成一个 Set,但事实并非如此。而是生成以下代码:

@JsonProperty("myProperty")
private List<String> myProperty = null;

有没有办法生成类似的东西

@JsonProperty("myProperty")
private Set<String> myProperty = null;

代替?

我找到了一个可能的解决方案 here在 SO 中,但这需要在 pom.xml 中进行一些配置。但是,我使用的在线编辑器只提供了为不同平台生成代码的选项,但不接受 pom 文件。

最佳答案

OpenAPI(版本 3)支持以下数据类型:

  • 字符串
  • 人数
  • 整数
  • boolean 值
  • 数组
  • 对象

OpenAPI v3 中不支持集合数据类型。最接近的数据类型是属性 uniqueItems 设置为 true 的数组(正如您所建议的)。但它仍然是一个对其项目的唯一性有限制的数组,而不是一个集合。

因此,您的请求无法在 OpenAPI 级别得到解决。

但是,代码生成器级别可能有一个选项,您需要将问题解决到您选择的代码生成器。

https://stackoverflow.com/questions/72900026/

相关文章:

java - 是否可以向 OpenAPI 添加方法?

ios - SwiftUI:有条件地隐藏 View 而不重新创建它

rust - 将未知类型的 PgRow 值转换为字符串

c++ - 类模板中声明的友元函数的模板参数推导

c# - 即使此 Func<> 变量为空,是什么导致内存分配?

java - 关闭 AsynchronousSocketChannel 时连接重置错误

xaml - 删除开关中的文本

swiftui - 带有条件绑定(bind)的 SwiftUI 中的错误必须具有可选类型,而不是字符

r - 按两个数字对列名称进行排序

docker - 在 Golang 中使用 docker 将敏感数据作为参数传递