Swagger 2.0语义错误,路径参数为$ref
我正在使用JSON Swagger 2.0 API定义。我已将我的定义简化为我遇到的问题的最小示例。当我使用引用对象定义在多个端点之间共享的路径参数时,就会出现问题 端点示例:Swagger 2.0语义错误,路径参数为$ref,swagger,swagger-2.0,swagger-editor,openapi,Swagger,Swagger 2.0,Swagger Editor,Openapi,我正在使用JSON Swagger 2.0 API定义。我已将我的定义简化为我遇到的问题的最小示例。当我使用引用对象定义在多个端点之间共享的路径参数时,就会出现问题 端点示例: /我的api/{id}/一些东西 /我的api/{id}/其他一些东西 由于这些id参数的定义方式相同,我将它们抽象到JSON文件的parameters部分,并将它们包含在“$ref”:“#/parameters/testObjectId”中 “招摇过市”的简化定义显示了这一点: { "swagger": "2.
/我的api/{id}/一些东西
/我的api/{id}/其他一些东西 由于这些
id
参数的定义方式相同,我将它们抽象到JSON文件的parameters
部分,并将它们包含在“$ref”:“#/parameters/testObjectId”
中
“招摇过市”的简化定义显示了这一点:
{
"swagger": "2.0",
"info": {
"title": "Test Service",
"description": "REST API for TestObjects",
"version": "1.0.0"
},
"host": "api.not-a-real-url.com",
"schemes": [
"https"
],
"basePath": "/api/test-objects",
"produces": [
"application/hal+json"
],
"consumes": [
"application/json"
],
"paths": {
"/{id}": {
"get": {
"operationId": "getTestObject",
"summary": "Get a TestObject resource referenced by slug string ID",
"security": [],
"parameters": [
{
"$ref": "#/parameters/testObjectId"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {}
}
},
"default": {
"description": "Error",
"schema": {
"type": "object",
"properties": {}
}
}
}
}
}
},
"parameters": {
"testObjectId": {
"name": "id",
"in": "path",
"required": true,
"type": "string",
"format": "slug",
"description": "Immutable, unique identifier of a TestObject"
}
},
"definitions": {
}
}
但是,当以“招摇过市”方式渲染时,我会得到以下错误:
Errors
Semantic error at paths./{id}
Declared path parameter "id" needs to be defined as a path parameter at either the path or operation level
问题在于实际定义了id
,只是抛出此错误的检查似乎发生在包含$ref
之前。大摇大摆的输出看起来是正确的
此外,我已经使用这种方法大约6个月了(只要我使用了招摇过市的方法),现在我才第一次遇到这个问题。我是否应该采取不同的措施来防止这个错误?我这样做是不是滥用了招摇 您的规范有效。它在Swagger Editor v.3.2.2中引入,并在v.3.2.3中固定(于2018年1月6日发布)