是否可以覆盖 OpenAPI 3 中引用参数的“必需”属性?

vla*_*ani 7 openapi

我正在构建一个简单的 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    
Run Code Online (Sandbox Code Playgroud)

现在,我想使用通用bookid 参数,但覆盖to 的required值。例如(这不起作用!!!):falsetrue

paths:
  ...

  /query2:
    get:
      parameters:
        - $ref: '#/components/parameters/bookid'
          required: true  # <--- ???
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Hel*_*len 5

不支持此操作。您需要为必需参数和可选参数单独定义参数。

从 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
Run Code Online (Sandbox Code Playgroud)

以下是现有的功能请求:

  • 但是,创建两个**参数**?一个“bookid”带有“required: false”,另一个名为“bookid_required”,与第一个相同,但带有“required: true”? (2认同)