Модуль Soap

NB: модуль Soap не поддерживает GET запросы к сервисам.

Отчасти это объясняется тем, что в теле запроса передаётся SOAP-запрос, а у GET-запроса тела нет (если можно так выразиться). По этой причине нужно отправлять POST запрос. Это можно сделать с помощью утилиты SOAP-UI (можно и в браузере, но в теле запроса нужно писать SOAP-запрос, который основан на WSDL и является достаточно громоздким).

Настройки структуры данных crud-сервиса

Опция types содержит в себе задаваемое в виде мапинга соответствие между классом (полным именем) и мапой публикуемых атрибутов этого класса. В мапе ключом является имя атрибута, а значением - либо строковый псевдоним, либо булево значение, указывающее включается атрибут в схему или нет. т.е. если указан псевдоним, то атрибут появляется в схеме под этим псевдонимом, во всех других случаях, кроме указания false, атрибут появляется под своим именем.

Настройка применяется при парсинге классов при формировании схемы данных сервиса, а также при парсинге входящих сообщений и генерации ответов. Путем замены normalize на функцию корректно приводящую данные к схеме.

Для работы с коллекциями и ссылками

Если значения коллекций и ссылок тоже надо распарсить как то иначе, объекты, которые находятся в этих свойствах можно тоже описать мапой в deploy.json вот по такому принципу:

"название_свойства": {
  "name": "новое_название(если нужно, поле необязательное)",
 "types": {
 //описания свойств
 }
}

Пример

"petitionExperts": {
          "module": "modules/soap/service/crud",
          "options": {
            "dataRepo": "ion://dataRepo",
            "metaRepo": "ion://metaRepo",
            "keyProvider": "ion://keyProvider",
            "namespace": "khv-gosekspertiza",
            "className": "petitionExpert",
            "types": {
              "petitionExperts@khv-gosekspertiza":{
                "property1":"new_property_name",
                "property2":true
                }
              }
            }
          }

Настройка, убирающая из запроса системные атрибуты

let gosEkspRemPetNew = normalize(e.item, null, {skipSystemAttrs: true});

Авторизация по токену oauth2 в модуле SOAP

Аутентификация по парам логин-пароль и логин-токен по умолчанию применяется для всех сервисов. Для аутентификации soap-запросов добавляем в сообщение заголовок безопасности WSSecurity. Для аутентфиикации REST-сервисов добавляем стандартные заголовки HTTP-аутентифкации.

Настройка типа проверки - по паролю или токену (pwd/token) выполняется в deploy.json настройкой authMode в соответствующем модуле:

Пример

"soap": {
      "globals": {
        "authMode": {
          "petitionExperts": "none",
          "petitionEstimated": "none",
          "gosEkspContract": "none",
          "bankAccounts": "none",
          "resolution": "none"
        }

По умолчанию все сервисы аутентифицируются по паролю. Для генерации токена пользователя в админке реализована специальная форма. Настраиваем authMode для сервиса в token, переходим в админку, генерируем токен, используем его вместо пароля в заголовках.