【问题标题】:In OpenAPI, can I use a regular schema component as a parameter?在 OpenAPI 中,我可以使用常规模式组件作为参数吗?
【发布时间】:2021-05-12 01:23:37
【问题描述】:

我在我的 API 中定义了一个带有路径参数的端点。

该参数的有效值已表示为枚举,我已将其定义为架构组件并在响应中使用。

两个问题:

  1. 如果您可以只使用对该架构组件的引用作为参数,为什么还要设置专用的参数组件,而不是使用可以在任何地方重复使用的通用架构组件?
  2. 如果您应该使用参数而不是通用架构,您能否创建一个引用架构组件的参数组件?我找不到任何可以通过验证的语法来执行此操作。

我会在此处粘贴我的定义,但我找不到任何不会造成严重混乱的格式选项。

【问题讨论】:

    标签: openapi


    【解决方案1】:

    如果您可以只使用对该架构组件的引用作为参数,为什么还要设置专用的参数组件,而不是使用可以在任何地方重复使用的通用架构组件?

    Parameter definitions 具有架构中不存在的其他属性,例如请求中的参数位置(in: pathin: query 等),serialization method 用于数组和对象值等。 schema 只是参数属性之一,但仅模式并不能提供足够的信息来有效地描述参数。

    你能创建一个引用模式组件的参数组件吗?

    是的。参数有一个schema,它可以是内联模式或$ref

    paths:
      /something/{role}:
        get:
          parameters:
            - $ref: '#/components/parameters/role'
    ...
    
    components:
      parameters:
        role:
          in: path
          name: role
          required: true
          schema:
            $ref: '#/components/schemas/UserRole'  # <-----
    
      schemas:
        UserRole:
          type: string
          enum: [user, admin]
    

    【讨论】:

    • 谢谢!我以为我已经尝试过这种语法。不知道有什么区别,但这很管用。
    猜你喜欢
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多