Кодировка URL Marklogic

Версия MarkLogic - 9.0-6.2

У меня есть настраиваемая конечная точка REST, которая принимает номер телефона в качестве параметра. Мое требование - прочитать этот входной номер телефона из URL-адреса, сравнить с номером телефона в базе данных и вернуть Match / NoMatch.

Когда я вызываю URL-адрес через инструмент SoapUI со значением номера телефона как + 1-800-723-1800, я вижу, что инструмент soapUI отправляет запрос GET в MarkLogic как & PhoneNo =% 2B1-800-723-1800. Когда я сравниваю (используя === в javascript) это значение со значением в базе данных, я получаю ожидаемый результат.

Однако, когда тот же вызов выполняется через IIB (IBM Integration Bus), я вижу в журналах MarkLogic, что запрос GET выполняется как & PhoneNo = + 1-800-723-1800 (+ не кодируется). Теперь этот результат сравнения поступает как NoMatch, хотя у меня есть точно такое же значение в базе данных.

Это проблема с кодировкой? Как я могу обрабатывать кодирование в MarkLogic?


person Bhanu    schedule 11.12.2018    source источник


Ответы (1)


Q: по «Это значение» и «точно такое же значение в базе данных», что это за значение в точности?

A: Какой бы инструмент (в данном случае IIB) не выполнял HTTP-запрос и не кодировал +, это либо неверно, либо ожидалось, что вызывающий этот инструмент отвечает за кодирование URL. Поскольку для правильного кодирования URL-адреса требуется, чтобы каждый компонент URL-адреса кодировался отдельно (а не весь URL-адрес), обычно библиотеки, которые принимают полные URL-адреса, будут ожидать, что они уже закодированы, поскольку они не могут правильно кодировать сам полный URL-адрес.

В: Какой код дает IIB URL-адрес для использования? Вероятно, этот код - это код, отвечающий за правильное кодирование URL-адреса (где + должен быть закодирован в процентах, иначе он будет декодирован как пробел)

person DALDEI    schedule 11.12.2018
comment
Спасибо за быстрый ответ. Значение в базе: + 1-800-723-1800. Когда SoapUI (или любой другой клиент) отправляет запрос с закодированными значениями (или специальными символами), выполняет ли MarkLogic автоматическое декодирование при получении запроса? - person Bhanu; 11.12.2018