Swagger - Ошибка проверки ответа: ошибка схемы - PullRequest
0 голосов
/ 29 января 2019

Этот вопрос уже много раз поднимался на 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
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...