我希望能够使用此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错误:不是有效的参数定义
答案 0 :(得分:2)
不幸的是,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