Модуль 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, переходим в админку, генерируем токен, используем его вместо пароля в заголовках.