在OpenAPI中,我可以使用常规模式组件作为参数吗



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

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

两个问题:

  1. 如果您可以只使用对该模式组件的引用作为参数,为什么要设置专用的参数组件,而不是使用可以在任何地方重复使用的通用模式组件
  2. 如果应该使用参数而不是通用模式,那么可以创建一个引用模式组件的参数组件吗?我找不到任何通过验证的语法

我会把我的定义粘贴在这里,但我找不到任何不会造成可怕混乱的格式化选项。

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

参数定义具有架构中不存在的其他属性,例如请求中的参数位置(in: pathin: query等(、数组和对象值的序列化方法等。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]

最新更新