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

招摇过市:从枚举中获取一个或多个值

罗俭
2023-03-14

我正在编写一个OpenAPI(Swagger)定义,其中一个查询参数可以取无,或N个值,如下所示:

/path?sort=field1,field2

如何在OpenAPI YAML中编写此内容?

我尝试了以下方法,但没有产生预期的结果:

- name: sort
  in: query
  schema:
    type: string
    enum: [field1,field2,field3]
  allowEmptyValue: true
  required: false
  description: Sort the results by attributes. (See http://jsonapi.org/format/1.1/#fetching-sorting)

共有1个答案

宿洋
2023-03-14

包含以逗号分隔的值列表的查询参数定义为数组。如果这些值是预定义的,那么它是一个枚举数组。

默认情况下,一个数组可以有任意数量的项,这些项符合您的“无或多”要求。如果需要,您可以使用minItemsmaxItems限制项目数量,并可以选择强制执行uniqueItems:true

参数定义如下所示collectionFormat:csv表示值以逗号分隔,但这是默认格式,因此可以省略。

      parameters:
        - name: sort
          in: query
          type: array  # <-----
          items:
            type: string
            enum: [field1, field2, field3]
          collectionFormat: csv  # <-----
          required: false
          description: Sort the results by attributes. (See http://jsonapi.org/format/1.1/#fetching-sorting)

来自OpenAPI 2.0的格式: csv已被替换为样式: form爆炸: false。样式: form是查询参数的默认样式,因此可以省略。

      parameters:
        - name: sort
          in: query
          schema:
            type: array  # <-----
            items:
              type: string
              enum: [field1, field2, field3]
          required: false
          description: Sort the results by attributes. (See http://jsonapi.org/format/1.1/#fetching-sorting)
          explode: false  # <-----

我认为没有必要使用allowEmptyValue,因为在这种情况下,空数组实际上是一个空值。此外,自OpenAPI 3.0以来,不建议使用allowEmptyValue。2“因为它将在将来的版本中删除。”

 类似资料:
  • 我正在使用swagger doc为我的应用程序生成API。doc是用yml编写的,在某些地方它将定义一些枚举道具(我们使用mysql)。这看起来像: 我希望得到这样的东西: 正如您所看到的,类型字段将是一个在配置文件中定义的字符串,但我收到的是这个字符串: Swagger将第一个值设置为数据类型,这是绝对错误的。所以问题是如何为“type”字段获取值“string”。

  • 我试图在我的微服务项目中生成一个单独的招摇过市,在Api网关中将所有服务招摇过市聚合成一个单独的招摇过市。为了实现这一点,我将遵循下一个教程https://objectpartners.com/2017/09/28/aggregate-services-into-a-single-swagger 这里的问题是,当我尝试设置绝对URL时,我收到的输出是未能加载API定义。未定义的http://loc

  • 我正在使用Swagger注释和SpringFox为我的REST API(使用Sprint Boot构建)生成Swagger规范。我正在用将返回的代码注释每个方法。例如: 然而,有些东西(我假设SpringFox)正在向每个API调用添加一个200响应代码,而不管它是否已定义。我知道我可以通过在每个方法中添加注释来删除此项,但a)这似乎是@ApiResponse定义的不必要重复,b)某些方法可能返回

  • 我应该工作,对吧?但它不是!!!!它告诉我dbValue可以转换为RelationActiveEnum...

  • 给定一个Spring Boot项目,该项目使用springdoc-openapi库公开一个OpenAPI(Swagger)endpoint,该endpoint记录了项目的Spring MVC控制器endpoint。 项目中的一个枚举使用Jackson在字段上提供的JsonValue来更改枚举的JSON表示形式。使用Lombok项目的getter注释将此枚举字段公开为getter: 然而,尽管Jac

  • 假设我有这样的枚举 我也有一个类,我想扩展有序[SimpleEnum] 所以在SimpleClass中,我只需要获取附加到相应SimpleEnum val的值。 在java中,我能够声明一个变量的枚举和访问一个实际的值对应于它的这个var,在scala我正在寻找一种方法来获取枚举的实例,并接触到它的值。