这个问题已经在SO上多次提出,但我似乎找不到与我的情况相关的答案。
我最近继承了一个使用Swagger的项目。这是我第一次接触Swagger,所以我一直在努力寻找为什么在本地控制台中看到这些错误的原因:
Error: Response validation failed: failed schema validation
at throwErrorWithCode (/Users/kf/src/s-server/node_modules/swagger-tools/lib/validators.js:121:13)
at Object.module.exports.validateAgainstSchema (/Users/kf/src/s-server/node_modules/swagger-tools/lib/validators.js:176:7)
at /Users/kf/src/s-server/node_modules/swagger-tools/middleware/swagger-validator.js:141:22
at /Users/kf/src/s-server/node_modules/swagger-tools/node_modules/async/lib/async.js:356:13
at async.forEachOf.async.eachOf (/Users/kf/src/s-server/node_modules/swagger-tools/node_modules/async/lib/async.js:233:13)
at _asyncMap (/Users/kf/src/s-server/node_modules/swagger-tools/node_modules/async/lib/async.js:355:9)
at Object.map (/Users/kf/src/s-server/node_modules/swagger-tools/node_modules/async/lib/async.js:337:20)
at validateValue (/Users/kf/src/s-server/node_modules/swagger-tools/middleware/swagger-validator.js:134:11)
at ServerResponse.res.end (/Users/kf/src/s-server/node_modules/swagger-tools/middleware/swagger-validator.js:252:9)
at _cb (/Users/kf/src/s-server/node_modules/restify/lib/response.js:337:14)
at ServerResponse.formatJSON (/Users/kf/src/s-server/node_modules/restify/lib/formatters/json.js:37:12)
at ServerResponse.format (/Users/kf/src/s-server/node_modules/restify/lib/response.js:152:23)
at ServerResponse.send (/Users/kf/src/s-server/node_modules/restify/lib/response.js:345:14)
at ServerResponse.json (/Users/kf/src/s-server/node_modules/restify/lib/response.js:244:18)
at Chain.findAll.then.then.result (/Users/kf/src/s-server/api/controllers/chain.js:29:25)
at bound (domain.js:395:14)
at runBound (domain.js:408:12)
at tryCatcher (/Users/kf/src/s-server/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/kf/src/s-server/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/Users/kf/src/s-server/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/Users/kf/src/s-server/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/Users/kf/src/s-server/node_modules/bluebird/js/release/promise.js:694:18)
我已经在editor.swagger.io上验证了我的swagger.yml文件,一切都很好。根据控制台中的错误,这是在/api/controllers/chain.js中发生的。
这是我在swagger.yml中针对此特定通话的内容:
/chains:
x-swagger-router-controller: chain
get:
description: Gets all the chains in system
operationId: fetchAllChains
responses:
default:
description: "List of Chains"
schema:
$ref: "#/definitions/Chains"
如果我转到swagger.yml的定义部分:
IVR:
properties:
phone:
type: string
pin:
type: string
support:
type: string
Chain:
properties:
code:
type: string
brand:
type: string
active:
type: boolean
ivr:
$ref: "#/definitions/IVR"
Chains:
type: array
items:
$ref: "#/definitions/Chain"
这是浏览器中“网络”标签的响应:
[{
"code": "SB",
"brand": "Star Brand",
"ivr": {
"phone": "1234567890",
"pin": "4353",
"support": "0987654321"
},
"active": false
}, {
"code": "JOB",
"brand": "jobin test",
"ivr": {
"phone": "2345678923",
"pin": "555",
"support": "5555678987"
},
"active": true
}]