昂首阔步-响应验证失败:模式验证失败

时间:2019-01-29 20:14:45

标签: javascript node.js swagger

这个问题已经在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
}]

0 个答案:

没有答案