在参数内部使用 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