【问题标题】:Swagger: Additional properties not allowed: allOfSwagger:不允许附加属性:allOf
【发布时间】:2017-03-14 13:18:23
【问题描述】:

我正在尝试通过使用allOf 来解决这个大张旗鼓的 API 继承问题。这是我招摇的 yaml 文件。

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"

当我将其粘贴到 online editor 时,我收到以下错误,我很难弄清楚。

✖ 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 做到这一点,然后添加或覆盖该响应中的字段。我到底做错了什么?

【问题讨论】:

    标签: swagger swagger-2.0 swagger-editor


    【解决方案1】:

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

    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"
    

    【讨论】:

    • 是的,这就是我最终的结果。
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 2021-11-18
    • 1970-01-01
    • 2023-01-10
    • 2017-07-04
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    相关资源
    最近更新 更多