Swagger предоставляет разные исходные коды в Hub и Editor.

Существует редактор Swagger (https://editor.swagger.io/) и концентратор Swagger (https://swaggerhub.com/). Я думал, что оба делают одну и ту же работу, пока не заметил, что исходные коды разные. В моем случае я создал сервер nodejs в обоих и посмотрел исходный код.

Редактор Swagger предоставляет:

exports.getJobs = function(args, res, next) {
  /**
   * Returns all jobs
   *
   * page String page (optional)
   * returns List
   **/
  var examples = {};
  examples['application/json'] = [ {
      // my json
} ];
  if (Object.keys(examples).length > 0) {
    res.setHeader('Content-Type', 'application/json');
    res.end(JSON.stringify(examples[Object.keys(examples)[0]] || {}, null, 2));
  } else {
    res.end();
  }
}

тогда как Swagger Hub обеспечивает:

/**
 * Returns all jobs
 *
 * page String page (optional)
 * returns List
 **/
exports.getJobs = function(page) {
  return new Promise(function(resolve, reject) {
    var examples = {};
    examples['application/json'] = [ {
            // my json
} ];
    if (Object.keys(examples).length > 0) {
      resolve(examples[Object.keys(examples)[0]]);
    } else {
      resolve();
    }
  });
}

Почему параметры функции разные? В редакторе Swagger Online это

exports.getJobs = function(args, res, next)

а в редакторе Swagger Hub это

exports.getJobs = function(page)

но почему? Какой из них правильно использовать? Как я могу использовать параметр res (например, для установки заголовка) в концентраторе swagger, если он не передан?


person papapple    schedule 02.12.2017    source источник


Ответы (1)


Генерация кода основана на Swagger Codegen. Судя по всему, Swagger Editor и SwaggerHub используют разные версии codegen. Не существует «правильного» кодегена, есть только старые и новые версии. Вы можете обратиться к разработчикам редактора и разработчикам SwaggerHub, чтобы узнать, какие версии codegen использует каждый инструмент.

Чтобы получить согласованные результаты, вы можете загрузить CLI-версию codegen. и запустить его самостоятельно:

java -jar swagger-codegen-cli-2.2.3.jar generate -i http://petstore.swagger.io/v2/swagger.yaml -l nodejs-server -o Petstore
person Helen    schedule 02.12.2017