【问题标题】:Is it possible to override the "required" attribute of a referenced parameter in OpenAPI 3?是否可以覆盖 OpenAPI 3 中引用参数的“必需”属性?
【发布时间】:2019-07-05 10:51:20
【问题描述】:

我正在构建一个简单的 OpenAPI 3 YAML 规范,如下所示:

paths:
  /query:
    get:
      parameters:
        - $ref: '#/components/parameters/bookid'

components:
  parameters:
    bookid:
      in: query
      name: bookid
      required: false
      schema:
        format: integer
        type: number    

现在,我想使用常见的bookid 参数,但将required 的值从false 覆盖到true。例如(这不起作用!!!):

paths:
  ...

  /query2:
    get:
      parameters:
        - $ref: '#/components/parameters/bookid'
          required: true  # <--- ???

有没有办法做到这一点?

【问题讨论】:

  • 在不相关的注释中,考虑使用type: integer 而不是type: number + format: integer

标签: openapi


【解决方案1】:

不支持。您需要为必需参数和可选参数分别定义参数。

从 OpenAPI 3.1 开始,您只能覆盖引用参数的 description,但不能覆盖其他属性(requiredname 等)。

# openapi: 3.1.0

parameters:
  # This works
  - $ref: '#/components/parameters/bookid'
    description: Custom description

  # This won't work - cannot override attributes other than "description"
  - $ref: '#/components/parameters/bookid'
    required: true

以下是现有的功能请求:

【讨论】:

  • 但是,创建两个参数?一个 bookidrequired: false 和另一个名为 bookid_requiredbookid_required 与第一个相同但带有 required: true?
  • 是的,就是这样。
  • 这对程序员来说真的很糟糕:-/
  • 您可以向github.com/OAI/OpenAPI-Specification/issues的OpenAPI规范存储库提交语法增强请求
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 2020-01-28
  • 2015-11-05
  • 1970-01-01
相关资源
最近更新 更多