Swagger:不允许的其他属性:allOf [英] Swagger: Additional properties not allowed: allOf

查看:26
本文介绍了Swagger:不允许的其他属性:allOf的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过使用 allOf 来找出这种招摇的 API 继承的东西.这是我招摇的 yaml 文件.

I'm trying to figure out this swagger API inheritance stuff by using allOf. This is my swagger yaml file.

swagger: '2.0'
info:
  title: Test API
  version: '1'
basePath: /api/v1
schemes:
  - https
produces:
  - application/json

paths:
  /users:
    get:
      summary: Collection of users
      tags:
        - users
      responses:
        200:
          description: A list of Users
          schema:
            $ref: "#/definitions/Users"        
        500:
          $ref: "#/responses/BadRequest"

definitions:
  User:
    required:
      - username
    properties:
      firstName:
        type: string
      lastName:
        type: string
      username:
        type: string
  Users:
    type: array
    items:
      $ref: "#/definitions/User"

responses:
  NonSuccess:
    description: Generic response for all non-success responses
    schema:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          description: The success code, 0 or -1.
        message:
          type: string
          description: The description message for this success code
        errors:
          type: array
          description: A map of errors within the request. Keyed by the parameter name and the values are the error details

  BadRequest:
    description: Invalid request parameters
    allOf:
      - $ref: "#/responses/NonSuccess"

当我将其粘贴到 在线编辑器 中时,我收到以下错误真的很难弄清楚.

When I paste this into the online editor, I get the following errors that I'm having a real hard time trying to figure out.

✖ Swagger Error
Additional properties not allowed: allOf
Jump to line 60

✖ Swagger Error
Not a valid response definition
Jump to line 22

主要问题似乎是 Additional properties not allowed: allOf 在这种情况下我似乎无法弄清楚我做错了什么.我试图声明一个基本的非成功响应,以便所有非 200 响应都将继承,以便 API 将具有非常标准的非成功响应.我的印象是我可以使用 allOf 来执行此操作,然后添加或覆盖该响应中的字段.我到底做错了什么?

The main problem seems to be Additional properties not allowed: allOf and I'm can't seem to figure out what I'm doing wrong in this case. I was trying to declare a basic non-success response so that all non-200 responses will inherit so that the API will have a very standard looking non-success response. I was under the impression I could do this with allOf and then add or overwrite the fields from that response. What exactly am I doing wrong?

推荐答案

allOf 标签只能用于 Schema 对象.不过,您绝对可以在响应的 Schema 部分使用它.这是一个例子.

The allOf tag can only be used on Schema objects. You can definitely use it on the Schema portion of the response, though. Here's an example of that.

swagger: '2.0'
info:
  title: Test API
  version: '1'
basePath: /api/v1
schemes:
  - https
produces:
  - application/json

paths:
  /users:
    get:
      summary: Collection of users
      tags:
        - users
      responses:
        200:
          description: A list of Users
          schema:
            $ref: "#/definitions/Users"        
        500:
          $ref: "#/responses/BadRequest"

definitions:
  User:
    required:
      - username
    properties:
      firstName:
        type: string
      lastName:
        type: string
      username:
        type: string
  Users:
    type: array
    items:
      $ref: "#/definitions/User"

  Response:
    type: object
    required:
      - code
      - message
    properties:
      code:
        type: integer
        description: The success code, 0 or -1.
      message:
        type: string
        description: The description message for this success code
      errors:
        type: array
        description: A map of errors within the request. Keyed by the parameter name and the values are the error details

  BadRequest:
    type: object
    required:
      - validationErrors
    properties:
      validationErrors:
        type: array
        items:
          type: string

responses:
  NonSuccess:
    description: Generic response for a non-success
    schema:
      $ref: "#/definitions/Response"

  BadRequest:
    description: Invalid request parameters
    schema:
      allOf:
        - $ref: "#/definitions/Response"
        - $ref: "#/definitions/BadRequest"

这篇关于Swagger:不允许的其他属性:allOf的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆