Есть ли эквивалентный способ сделать "lb soap" программно с помощью loopback?
Согласно документации на петлю, lb soap
создает модели базового источника данных на основе мыла. Есть ли программный способ сделать это? Я хочу сделать это программно, чтобы облегчить динамическое потребление мыла с помощью динамически создаваемых моделей и источников данных.
1 ответ
Отказ от ответственности: я соавтор и сопровождающий LoopBack.
Вот исходный код, реализующий команду lb soap
:
Вот код, который генерирует определение модели и исходный код метода:
exports.generateAPICode = function generateAPICode(selectedDS, operationNames) { // eslint-disable-line max-len
var apis = [];
var apiData = {
'datasource': selectedDS,
'wsdl': selectedWsdl,
'wsdlUrl': selectedWsdlUrl,
'service': selectedService.$name,
'binding': selectedBinding.$name,
'operations': getSelectedOperations(selectedBinding, operationNames),
};
var code = soapGenerator.generateRemoteMethods(apiData);
var models = soapGenerator.generateModels(apiData.wsdl, apiData.operations);
var api = {
code: code,
models: models,
};
apis.push(api);
return apis;
};
Как видите, большая часть работы делегирована soapGenerator
, что относится к loopback-soap - модулю более низкого уровня, поддерживаемому командой LoopBack. В вашем приложении вы можете использовать loopback-soap
напрямую (не нужно зависеть от нашего инструментария CLI) и вызывать его API для генерации моделей, связанных с SOAP.
К сожалению, у нас нет много документации для loopback-soap
поскольку до сих пор это был в основном внутренний модуль. Вам нужно будет прочитать исходный код, чтобы лучше понять. Если вы сделаете это, мы с радостью примем материалы, улучшающие документацию для будущих пользователей.