Пользовательская политика Mule 4 Добавление заголовков запросов динамически - PullRequest
0 голосов
/ 12 февраля 2019

Я очень плохо знаком с Mulesoft и программистом начального уровня.Я пытался выяснить, как реализовать пользовательские политики Mule 4.Это электронная документация: https://docs.mulesoft.com/api-manager/2.x/http-policy-transform#add-headers

Следуя примерам, я успешно смог добавить заголовки запросов и ответов.Моя главная цель - добавить заголовки запросов при использовании переменных.Я пытаюсь MEL (https://docs.mulesoft.com/mule-runtime/3.7/mule-expression-language-examples), чтобы попытаться вызвать имена переменных, но это не работает. ОДНАКО, всякий раз, когда я пытаюсь зарегистрировать переменные, он возвращает правильное значение.

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:http-policy="http://www.mulesoft.org/schema/mule/http-policy"
      xmlns:http-transform="http://www.mulesoft.org/schema/mule/http-policy-transform"
      xmlns:secure-properties="http://www.mulesoft.org/schema/mule/secure-properties"
      xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/http-policy http://www.mulesoft.org/schema/mule/http-policy/current/mule-http-policy.xsd
               http://www.mulesoft.org/schema/mule/http-policy-transform http://www.mulesoft.org/schema/mule/http-policy-transform/current/mule-http-policy-transform.xsd
               http://www.mulesoft.org/schema/mule/secure-properties http://www.mulesoft.org/schema/mule/secure-properties/current/mule-secure-properties.xsd">

    <http-policy:proxy name="{{{policyId}}}-custom-policy">
        <http-policy:source propagateMessageTransformations="true">
            <try>
                <set-variable variableName="header" value="TEST_HEADER"/>
                <logger level="INFO" message="#[vars.header]" />
                <http-transform:add-headers outputType="request">
                    <http-transform:headers>#[{'TEST_HEADER': 'TEST'}]</http-transform:headers>
                </http-transform:add-headers>
                <http-policy:execute-next/>
                <http-transform:add-headers outputType="response">
                    <http-transform:headers>#[{'Header_Added': '#[vars.header]'}]</http-transform:headers>
                    #this step doesn't work as I hoped it would
                </http-transform:add-headers>
                <logger level="INFO" message="#[vars.header]" />
                #logging prints the value of header
             </try>
        </http-policy:source>
    </http-policy:proxy>
</mule>

ЯПопытка добавить #[vars.header] в качестве имени заголовка запроса и, возможно, значение? Нужно ли мне создать другую переменную, чтобы иметь значение заголовка? Может кто-нибудь, пожалуйста, направить меня в правильном направлении?

Спасибо

1 Ответ

0 голосов
/ 13 февраля 2019

Mule 4 использует выражения dataweave.Попробуйте удалить кавычки, чтобы они не рассматривались как статическая строка, и удалите вложенные скобки выражений '# []':

<http-transform:headers>#[{'Header_Added': vars.header}]</http-transform:headers>

или другой совет, если вам нужен доступ к переменной в середине строки, которую выможет использовать синтаксис $ ():

<http-transform:headers>#[{'Header_Added': '$(vars.header)'}]</http-transform:headers>
...