SwaggerUI/YAML - 不应有附加属性 additionalProperty: requestBody

SwaggerUI/YAML - should NOT have additional properties additionalProperty: requestBody

使用 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: []

这条错误消息看起来很眼熟。尝试在参数的 required: 行下插入一个 schema: ,然后缩进 type: 和 format: 行。

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

我从外部来源得到了说明,所以这是我学到的:

指定 swagger: 2.0 也意味着 OpenAPI Specification 2.0.0 是编辑器所期望的,而我认为它使用的是 OAS 3。 我仍然不确定为什么 in: body 首先不起作用,但我在 "body" 周围添加了引号,这使得错误消失了。然后我尝试删除引号并且效果很好。

编辑器报错好像不太靠谱

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