Пользовательский заголовок с токеном в бизнес-классе PASOE с веб-службой?
У меня есть объект бизнес-класса PASOE, настроенный как веб-служба. Я пытаюсь определить, как создать собственный заголовок, который позволит мне передать хешированный токен. Это то, что мне нужно обновить до 11.7.4 для DOH(OpenEdge.Web.DataObject.DataObjectHandler)? Или это то, что я просто добавляю в метод, определенный в классе? Извиняюсь за отсутствие кода для иллюстрации моей ситуации, но я не уверен, с чего начать.
1 ответ
Если вы используете Business Entity с веб-транспортом, то вы используете DOH, и применяется следующее. Если вы используете остальной транспорт, то вы не используете DOH, и ваш выбор более ограничен.
Документ доступен в DOH по адресу https://documentation.progress.com/output/oe117sp/index.html - это для 11.7.4, но в основном относится ко всем версии (то есть с 11.6.3+). Здесь описывается файл сопоставления JSON, который вам понадобится для создания переопределения сгенерированного по умолчанию.
Если вы хотите использовать значение заголовка для всех операций, то вы можете использовать одно из событий DOH. Пример обработчиков событий приведен по адресу https://github.com/PeterJudge-PSC/http_samples/blob/master/web_handler/data_object_handler/DOHEventHandler.cls; вам нужно будет запустить этот обработчик в процедуре запуска сеанса, используя new DOHEventHandler()
(способ, которым написан код, состоит в том, что он делает себя единственным).
Теперь вы можете добавить код обработки для Invoking
событие, которое срабатывает до запуска бизнес-логики.
Если вы хотите передать значение заголовка в бизнес-логику, вам нужно
- Скопируйте сгенерированный файл сопоставления
<service>.gen
к<service.map>
в той же папке. "gen" файлы генерируются и будут перезаписаны инструментарием - В файле.map добавьте новый
arg
запись. Это должно быть в том же порядке, что и параметры метода BE. - JSON должен выглядеть примерно так: это прочитает значение заголовка и передаст его в качестве входного параметра в метод.
{ "ablName": "<parameter_name>",
"ablType": "CHARACTER",
"ioMode": "INPUT",
"msgElem": {"type": "HEADER", "name": "<http-header-name>"}
}