我正在使用http://editor.swagger.io来设计API,但我收到一条错误,我不知道该如何处理:
Schema error at paths['/employees/{employeeId}/roles'].get.parameters[0]
should NOT have additional properties
additionalProperty: type, format, name, in, description
Jump to line 24
我以类似的方式定义了其他端点,并且没有出现此错误。我想知道我是否有一些缩进或未公开引号的问题,但似乎并非如此。谷歌似乎也没有提供任何有用的结果。
swagger: "2.0"
info:
description: Initial draft of the API specification
version: '1.0'
title: App 4.0 API
host: api.com
basePath: /v1
tags:
- name: employees
description: Employee management
schemes:
- https
paths:
/employees/{employeeId}/roles:
get:
tags:
- employees
summary: "Get a specific employee's roles"
description: ''
operationId: findEmployeeRoles
produces:
- application/json
parameters:
- name: employeeId <====== Line 24
in: path
description: Id of employee whose roles we are fetching
type: integer
format: int64
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Role'
'403':
description: No permission to see employee roles
'404':
description: EmployeeId not found
任何提示?
答案 0 :(得分:26)
错误消息具有误导性。实际错误是您的路径参数缺失required: true
。路径参数始终是必需的,因此请记住向其添加required: true
。
答案 1 :(得分:1)
有同样的问题。我不小心将Swagger 2.0
和Openapi 3.0.0
的语法混合在一起。在Openapi 3.0.0
中,定义被重新定义为组件。在online editor中,您可以点击按钮编辑> 转换为OpenAPI 3 以使用Openapi 3.0.0
。
详细了解组件 here。
备注:
OAS 3是该版本的最新版本 OpenAPI规范。
答案 2 :(得分:0)
语法要求可能需要两个参数,如Helen所述required: true
也是如此,type:DataType
也是如此。该错误具有误导性。