SwaggerUI / YAML - 不应该有其他属性additionalProperty:requestBody

时间:2017-12-04 11:25:15

标签: swagger swagger-ui swagger-2.0 openapi

使用 editor.swagger.io设计API 我发现自己无法添加requestBody属性,收到我无法解决的错误:

Schema error at paths['/projects/{projectId}/user'].post
should NOT have additional properties
additionalProperty: requestBody
Jump to line 91

我不明白我做错了什么,特别是在查看requestBody documentation之后。研究给我带来的只是误差误导的倾向。

编辑:从这里的答案显示,看起来编辑器应该使用OpenAPI 2.0,但实际上期望3.0同时返回两者的错误。鉴于我已经包含了

,我会在使用什么方面使用一些帮助
swagger: "2.0"

在文档开头的行。 在@Mike的答案中使用openapi: 3.0.0进行测试时,我只是在允许其他属性方面遇到更多错误。

以下是产生错误的内容,第91行为post:

/projects/{projectId}/user:
      post:
        tags:
        - projects
        summary: Modify project user.
        operationId: modifyProjectUser
        parameters:
        - name: projectId
          in: path
          description: ID of the project
          required: true
          type: integer
          format: int32
        requestBody:
          content: 
            application/json:
              schema:
              $ref: '#/definitions/User'
        responses:
          "200":
            description: Successful operation
            schema:
              type: array
              items:
                $ref: "#/definitions/User"
        security:
        - api_key: []

3 个答案:

答案 0 :(得分:12)

我从外部来源得到了澄清,所以这就是我所学到的:

指定swagger: 2.0也意味着编辑器需要OpenAPI Specification 2.0.0,而我认为它使用的是OAS 3。 我仍然不确定为什么in: body首先不起作用,但我在"body"附近添加了引号,这使得错误消失了。然后我尝试删除引号,它工作正常。

编辑在错误报告方面看起来并不可靠。

答案 1 :(得分:1)

此错误消息看起来很熟悉。尝试插入一个模式:在参数的required:行下面,然后缩进类型:和format:lines。

因为我还没有设置自己的SwaggerUI服务器。我拿了你的代码片段并将其粘贴到SwaggerHub中。然后我删除了$ ref:行只是为了进一步简化代码库。这是无错误结果的屏幕截图。 enter image description here

答案 2 :(得分:0)

就我而言,因为我使用的是 openapi:3.0.0。架构 $ref 应该是 '#/components/schemas/{schemaname}' 而不是 '#/definitions/schemas/{schemaname}'