在参数内部使用 ENUM 定义 (SWAGGER)
Using ENUM definitions inside of parameters (SWAGGER)
我希望能够使用这个 ENUM 定义:
goalStatus:
type: string
enum:
- ACTIVE
- COMPLETED
- FULFILLED
- DELETED
...在参数定义内部,但是,我继续收到错误:
get:
description: Returns all goals for a customer
operationId: listGoals
parameters:
- name: status
in: query
description: filter by goal status
required: false
schema:
$ref: "#/definitions/goalStatus"
错误:
Swagger Error: Not a valid parameter definition
不幸的是,OpenAPI 2.0 (fka.Swagger) 没有使用架构对象定义 query
参数。因此,您不能使用对 goalStatus
定义的引用(它适用于 body 参数)。
你可以做的是定义一个可重用的参数,但如果你想在其他定义中重用这个枚举,你将不得不定义它两次(一次在定义中,一次在参数中)。即将推出的 OpenAPI 3.0 版本通过允许使用架构定义所有参数类型来解决此问题。
以下是使用可重用参数的 2.0 版示例:
swagger: '2.0'
info:
version: 1.0.0
title: Parameter with enum example
paths:
/goals:
get:
description: Returns all goals for a customer
operationId: listGoals
parameters:
- $ref: "#/parameters/goalFilter"
responses:
200:
description: OK
parameters:
goalFilter:
name: status
in: query
description: filter by goal status
required: false
type: string
enum:
- ACTIVE
- COMPLETED
- FULFILLED
- DELETED
我希望能够使用这个 ENUM 定义:
goalStatus:
type: string
enum:
- ACTIVE
- COMPLETED
- FULFILLED
- DELETED
...在参数定义内部,但是,我继续收到错误:
get:
description: Returns all goals for a customer
operationId: listGoals
parameters:
- name: status
in: query
description: filter by goal status
required: false
schema:
$ref: "#/definitions/goalStatus"
错误:
Swagger Error: Not a valid parameter definition
不幸的是,OpenAPI 2.0 (fka.Swagger) 没有使用架构对象定义 query
参数。因此,您不能使用对 goalStatus
定义的引用(它适用于 body 参数)。
你可以做的是定义一个可重用的参数,但如果你想在其他定义中重用这个枚举,你将不得不定义它两次(一次在定义中,一次在参数中)。即将推出的 OpenAPI 3.0 版本通过允许使用架构定义所有参数类型来解决此问题。
以下是使用可重用参数的 2.0 版示例:
swagger: '2.0'
info:
version: 1.0.0
title: Parameter with enum example
paths:
/goals:
get:
description: Returns all goals for a customer
operationId: listGoals
parameters:
- $ref: "#/parameters/goalFilter"
responses:
200:
description: OK
parameters:
goalFilter:
name: status
in: query
description: filter by goal status
required: false
type: string
enum:
- ACTIVE
- COMPLETED
- FULFILLED
- DELETED