Существует редактор 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, если он не передан?