首页 > 解决方案 > 是否可以覆盖 OpenAPI 3 中引用参数的“必需”属性?

问题描述

我正在构建一个简单的 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    

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

paths:
  ...

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

有没有办法做到这一点?

标签: openapi

解决方案


这是不支持的。您需要对必需参数和可选参数进行单独的参数定义。

从 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

以下是现有的功能请求:


推荐阅读