Этот вопрос уже много раз поднимался на 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)
Я проверил мой файл swagger.yml в редакторе.swagger.io и все хорошо.Исходя из ошибки в моей консоли, это происходит в /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
}]