使用 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: []
答案 0 :(得分:12)
我从外部来源得到了澄清,所以这就是我所学到的:
指定swagger: 2.0
也意味着编辑器需要OpenAPI Specification 2.0.0,而我认为它使用的是OAS 3。
我仍然不确定为什么in: body
首先不起作用,但我在"body"
附近添加了引号,这使得错误消失了。然后我尝试删除引号,它工作正常。
编辑在错误报告方面看起来并不可靠。
答案 1 :(得分:1)
此错误消息看起来很熟悉。尝试插入一个模式:在参数的required:行下面,然后缩进类型:和format:lines。
因为我还没有设置自己的SwaggerUI服务器。我拿了你的代码片段并将其粘贴到SwaggerHub中。然后我删除了$ ref:行只是为了进一步简化代码库。这是无错误结果的屏幕截图。
答案 2 :(得分:0)
就我而言,因为我使用的是 openapi:3.0.0。架构 $ref 应该是 '#/components/schemas/{schemaname}'
而不是 '#/definitions/schemas/{schemaname}'