swagger – 数据与’oneOf’中的任何模式都不匹配 – 错误

我在swagger在线编辑器中遇到以下错误

数据与’oneOf’中的任何模式都不匹配

'/tenants/tenant_id/groups/group_id':
get:
  description: 'Returns the group with specific id ( id, name, description, tenant_id... ) along with end point pools ( id, name, description, source, tenant_id... ) associated with this particular groups'
  operationId: getGroupWithKey
  consumes:
    - application/json
    - text/plain, */*
  produces:
    - text/xml
  parameters:
    - in: header
      name: 'X-AuthToken'
      description: authentication token obtained during login
      required: true
      schema:
        $ref: '#/definitions/token_string'
  responses:
    '200':
      description: OK (group with provided id received)
      schema:
        $ref: '#/definitions/getGroupWithKey'
    default:
      description: error
      schema:
        $ref: '#/definitions/errorModel'

definitions:
### Login Definitions ###      
  token_string:
    type: object
    required:
      - 'X-AuthToken'
    properties:
      X-AuthToken: 
        type: string

错误如下所示,第206行是以“参数”开头的行

✖ Swagger Error

Data does not match any schemas from 'oneOf'   
Jump to line 206
Details
Object
code: "ONE_OF_MISSING"   
message: "Data does not match any schemas from 'oneOf'"
path: Array [5] 
0: "paths"
1: "/tenants/tenant_id/groups/group_id"
2: "get"
3: "parameters"
4: "0"
inner: Array [2]
0: Object
code: "ONE_OF_MISSING"
message: "Data does not match any schemas from 'oneOf'"
path: Array [5]
inner: Array [2]
1: Object
code: "OBJECT_MISSING_REQUIRED_PROPERTY"
message: "Missing required property: $ref"
path: Array [5]
level: 900
type: "Swagger Error"
description: "Data does not match any schemas from 'oneOf'"
lineNumber: 206

我尝试改变类型:字符串定义下,仍然没有运气.
我很确定我在这里错过了正确的类型值,感谢任何帮助

谢谢

最佳答案 定义头参数时,不能使用模式,只有在使用:body时才允许使用模式.

因此,header参数只能是原子属性(string,number,…).

您似乎想要定义可重用的头参数,这样做:

>在参数部分中定义token_string
>然后使用$refin操作的参数

(我还添加了虚拟getGroupWithKey和errorModel以使定义有效):

swagger: '2.0'
info:
  version: 1.0.0
  title: Header API
  description: A simple API to learn how you can define headers

paths:
  '/tenants/tenant_id/groups/group_id':
    get:
      description: 'Returns the group with specific id ( id, name, description, tenant_id... ) along with end point pools ( id, name, description, source, tenant_id... ) associated with this particular groups'
      operationId: getGroupWithKey
      consumes:
        - application/json
        - text/plain, */*
      produces:
        - text/xml
      parameters:
        - $ref: '#/parameters/token_string'
      responses:
        '200':
          description: OK (group with provided id received)
          schema:
            $ref: '#/definitions/getGroupWithKey'
        default:
          description: error
          schema:
            $ref: '#/definitions/errorModel'

parameters:
  token_string:
    in: header
    name: X-AuthToken
    type: string
    description: authentication token obtained during login
    required: true

definitions:
### Login Definitions ###      
  errorModel:
    type: string
  getGroupWithKey:
    type: string

如果需要,您当然可以定义内联参数.
我建议你看看同一主题Define global parameters的另一个问题

点赞