У меня есть API, который использует следующие параметры запроса:
/events/search
?title=royal
&area=southeast
&maint[date]=20180823
&maint[user]=oscar
&maint[action]=release
(разрывы строк добавлены для удобства чтения)
Обработка параметров простого запроса в WSO2 EI проста. Есть несколько способов сделать это с помощью посредник по вопросам собственности:
<property name = "title" expression = "get-property('query.param.title')"/><property name = "title" expression = "$url:title"/><property name = "title" expression = "$ctx:query.param.title"/>Однако мне не удалось обработать параметры запроса на основе массива / объекта. Я пробовал использовать посредник по вопросам собственности разными способами, но ни один из них не работает:
<property name = "maintDate" expression = "get-property('query.param.maint[date]')"/><property name = "maintDate" expression = "get-property('query.param.maint.date')"/><property name = "maintDate" expression = "$url:maint[date]"/><property name = "maintDate" expression = "$url:maint.date"/><property name = "maintDate" expression = "$url:maint[date]"/><property name = "maintDate" expression = "$url:maint%5Bdate%5D"/>У кого-нибудь был опыт и успех в этой области?





Ваш шаблон URL-адреса ESB API будет выглядеть следующим образом:
uri-template = "/test?title = {t}&area = {a}&maint[date] = {date}&maint[user] = {user}&maint[action] = {action}
Вы можете получить доступ к параметрам запроса в квадратных скобках, как показано ниже:
<property name = "date" expression = "$ctx:uri.var.date"/>
<property name = "user" expression = "$ctx:uri.var.user"/>
<property name = "action" expression = "$ctx:uri.var.action"/>
В качестве дополнительного вопроса: что, если параметры запроса необязательны? Я понимаю, что один из способов разрешить необязательные параметры запроса - это использовать шаблон uri "/ test *", однако тогда я не могу "назвать" каждое из значений параметра запроса, используя "maint [date] = {date}" предложенное определение.
Я пробовал несколькими способами получить доступ к значениям параметров запроса в квадратных скобках, когда параметры запроса необязательны, но я не смог найти решения.
Спасибо за попытку, очень признателен!
Спасибо, Саад, проблема решена. Следует добавить, что мне нужно было закодировать левую и правую квадратные скобки в uri-шаблоне, поскольку они кодировались инструментом, который я использовал для тестирования (т.е. maint% 5Bdate% 5D = {date}).