<< Click to Display Table of Contents >> Интеграция с внешними системами Ограничения при написании HTTP-запросов |
Чтобы избежать ошибок, проверьте, что в HTTP-запросе к сервису интеграции:
•указаны данные для аутентификации;
•используется правильный протокол: HTTP или HTTPS;
•настроен список разрешенных доменов;
•учтены требования к кодировке;
•учтены требования к объему бинарных данных при их передаче;
•используются допустимые параметры;
•правильно указаны значения параметров для функций и свойств для типов сущностей;
•учтено время выполнения операций в Directum RX.
Перенаправление запросов с HTTP на HTTPS
При установке Directum RX можно выбрать протокол для работы системы. Обычно продуктивная система работает по защищенному протоколу HTTPS, а локальная – по протолку HTTP. Если Directum RX работает по протоколу HTTPS, то внешней системе нужно отправлять запросы к сервису интеграции по этому же протоколу. Если внешняя система попытается отправить запрос по протоколу HTTP, то сработает правило перенаправления на HTTPS. При этом внешняя система получит ответ с кодом 307. Проверьте, что внешняя система умеет обрабатывать этот код и автоматически повторять запрос уже по протоколу HTTPS. Либо напишите обработчик, который выполнит переповтор. |
Настройка списка разрешенных доменов
По умолчанию браузеры блокируют запросы, отправляемые скриптами от одного домена к другому. Если в одном домене находится сервис интеграции, и к нему нужно обратиться из другого домена, то запрос не выполнится. Чтобы обратиться к сервису интеграции, нужно разрешить в нем такие запросы через механизм CORS. Для этого в Directum Launcher во встроенном редакторе YAML в секцию IntegrationService добавьте параметр CORS_ALLOWED_ORIGINS_LIST и укажите в нем список доменов, с которых разрешено отправлять запросы. Имя каждого домена задается в одинарных кавычках. Пример настройки:
|
Сервис интеграции отправляет ответ в кодировке UTF-8 и ожидает HTTP-запрос в кодировке UTF-8. Поэтому напишите обработчик, который перекодирует: •ответы, если внешней системе нужен ответ в другой кодировке; •значения параметров и свойств в HTTP-запросах, которые отправляет внешняя система, если в них используются русские символы или символы, которые не входят в кодировку ASCII. ВАЖНО. Установка кодировки charset=utf-8 в заголовке Content-Type не поможет. Перекодировать значения параметров и свойств можно c помощью методов специализированных библиотек. Для каждого языка программирования существуют свои библиотеки. Пример кодировки для .NET
|
В одном HTTP-запросе из внешней системы (HttpClient) в Directum RX можно передать файл (бинарные данные) размером 350 МБ. Важно. В виде строки рекомендуется передавать бинарные данные размером до 100 МБ. Если передавать файл большего размера, сервис интеграции может потреблять значительно больше оперативной памяти. Чтобы передать файл большего размера, используйте потоковую передачу данных. Максимальный размер файла для загрузки в систему с помощью потоков – 2 ГБ. Иначе: 1.На стороне внешней системы напишите обработчик, который разделит файл на части и передаст его в нескольких запросах. 2.В среде разработки напишите функцию интеграции, которая из частей соберет единый файл. |
Время выполнения HTTP-запроса = 120 секунд. Если за это время сервис интеграции не успел выполнить запрос, внешняя система получает ответ с кодом «502.3 Bad Gateway». Поэтому рекомендуется предварительно выносить ресурсоемкие операции в асинхронный обработчик. Если по какой-то причине асинхронные обработчики использовать нельзя, измените настройки IIS (для ОС Microsoft Windows) или HAProxy (для ОС Linux). Подробнее о рекомендациях по разработке см. в руководстве разработчика, раздел «Запросы на выполнение длительных операций». |
© Компания Directum, 2024 |