Как получить доступ к определенным объектам swagger yaml из javascript

Я использовал Swagger Yaml для описания конечной точки и создания фиктивного сервера. Существующая конечная точка (которую я издеваюсь) не соответствует принципам RESTful на 100%, поэтому я просто хочу перезаписать ответ, возвращаемый фиктивным сервером. Простой код сервера показан ниже:

var swagger         = require('swagger-server');
var server          = swagger('map-cache.yaml');

var port            = 7072;

server.post('/map-qa_trunk/v2/getData', function(req, res, next) {
    var foo = { 
        err : 123,
        msg : "error message"
    };  
    res.json(foo);
});

server.listen(port, function() {
  console.log('Map Cache Mock Server is now running at http://localhost:' + port);
});

В определении Yaml есть определенный объект с именем MapResponseData. Как мне создать экземпляр этого объекта, чтобы я мог заполнить его по мере необходимости и вернуть в res.json()? Что-то похожее на ниже:

var response = getMapResponseData(); // don't know what this call should be
response.fieldA = 123;
res.json(response);

Я предполагаю, что это должно быть возможно, поскольку Swagger проанализировал файл YAML и знает обо всех указанных определениях.


person Gary Kipnis    schedule 03.02.2017    source источник


Ответы (1)


Попробуйте вывести объект запроса в console.log, чтобы узнать, сможете ли вы найти ссылку на определение чванства. Другим вариантом может быть извлечение проанализированного определения swagger из файла yaml (например, с использованием js-yaml) и извлечение оттуда.

Однако мой лучший совет — использовать swagger-tools вместо swagger-server. Пакет swagger-server является альфа-версией и имеет меньше загрузок, редакций и пользователей, чем swagger-tools. Преимущество swagger-tools в том, что он будет активно поддерживаться, и есть более широкое сообщество, которое может вас поддержать. Чтобы преобразовать проект в инструменты swagger, используйте swagger.io > Редактор Swagger > Онлайн-редактор > Вставьте yaml на левой панели > Создать сервер > Node.js

В swagger-tools все определение Swagger Yaml содержится в каждом объекте запроса:

req.swagger.swaggerObject

и вы можете извлечь из него определения объекта ответа по мере необходимости.

person Megan D    schedule 03.02.2017