当前位置: 首页 > 知识库问答 >
问题:

在OpenAPI中指定集合

曾新
2023-03-14

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

有一件事我找不到,那就是如何指定一个集合。

我正在使用https://editor.swagger.io/我输入了整个API。对于要指定为集的属性,我编写了以下代码:

   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;

而是?

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

共有1个答案

瞿博易
2023-03-14

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

  • 字符串
  • 号码
  • 整数
  • 布尔值
  • 数组
  • 对象

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

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

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

 类似资料:
  • 我想为我的Swagger API创建一个递归规范。这个概念似乎没有出现在Swagger文档中,所以我怀疑这是不可能的。因此,我也愿意接受任何由Swagger支持的替代解决方案。 例如,我试图创建一个类似文档的结构。每个文档都有部分,每个部分都有文本和自己的部分。我计划使用这样的APIendpoint: http://a.b.com/docs/{文档ID} http://a.b.com/docs/{

  • 我试图从我的代码库生成数据来填充OpenAPI 3.0输入。 我有一个restendpoint,用于将文件上载到服务器。 我有一个表单作为聚合vaadin上传组件,用于上传文件。路径是,表单参数名是。表单正确地将文件上传到服务器,所以这不是问题所在。 服务器endpoint使用超文本标记语言窗体规范中的XQRS RestXQ上传文件来实现。 我正在尝试为多部分文件上传的OpenAPI 3.0UI创

  • 我正在为一个项目设计openAPI规范。该项目是一个REST API,提供有关酒店的信息。 如果,响应应该如下所示: 我不希望有一个涵盖这两种响应的规范,因为我希望基于其URL参数验证任何给定的响应(例如,时不应该是字段)。到目前为止,我还没能找到一种基于查询参数在openAPI中指定不同返回行为的方法。 是否有一种基于查询参数指定行为的方法?或者,我是否应该将APIendpoint更改为?

  • 我希望在OpenAPI中表示以下JSON对象: 属性的数量和属性名称不是完全预先确定的,所以我希望使用additionalProperties。然而,我不太确定它将如何通过OpenAPI/Swagger 2.0来表示。我试过这个: 或JSON等价物: 但这不太管用。有没有办法保持我想要表示的JSON对象的结构,特别是字符串和整数,而不是任意对象类型?