Im folgenden Beispiel werden drei Richtlinien zum Zuweisen von Nachrichten verwendet:
<!-- Policy #1: Set variables in the request --> <AssignMessage name="AM-set-variables"> <!-- Create a variable named myAppSecret --> <AssignVariable> <Name>myAppSecret</Name> <Value>42</Value> </AssignVariable> <!-- Create a variable named config.environment --> <AssignVariable> <Name>config.environment</Name> <Value>test</Value> </AssignVariable> <!-- Create a variable named config.protocol --> <AssignVariable> <Name>config.protocol</Name> <Value>gopher</Value> </AssignVariable> </AssignMessage>
In der ersten Richtlinie werden mit dem Element <AssignVariable> drei Variablen in der Anfrage erstellt und festgelegt. Jedes <Name>-Element gibt einen Variablennamen an und <Value> gibt den Wert an.
Die zweite Richtlinie verwendet das Element <AssignVariable>, um die Werte zu lesen und drei neue Variablen zu erstellen:
<!-- Policy #2: Get variables from the request --> <AssignMessage continueOnError="false" enabled="true" name="get-variables"> <AssignTo createNew="false" transport="http" type="request"/> <!-- Get the value of myAppSecret and create a new variable, secret --> <AssignVariable> <Name>secret</Name> <Ref>myAppSecret</Ref> <Value>0</Value> </AssignVariable> <!-- Get the value of config.environment and create a new variable, environment --> <AssignVariable> <Name>environment</Name> <Ref>config.environment</Ref> <Value>default</Value> </AssignVariable> <!-- Get the value of config.protocol and create a new variable, protocol --> <AssignVariable> <Name>protocol</Name> <Ref>config.protocol</Ref> <Value>default</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
In der zweiten Richtlinie verweist das <Ref>-Element auf die Quellvariable und <Name>-Elemente die Namen der neuen Variablen. Wenn auf die Variable, auf die von dem <Ref>-Element verwiesen wird, nicht zugegriffen werden kann, können Sie den vom Element <Value> angegebenen Wert verwenden.
Diese Richtlinien ausprobieren:
<Set>, um der Antwort die Variablen hinzuzufügen. Im folgenden Beispiel wird eine XML-Nutzlast in der Antwort erstellt, die Edge an den Client zurückgibt:
<!-- Policy #3: Add variables to the response --> <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload"> <DisplayName>put-em-in-the-payload</DisplayName> <Set> <Payload contentType="application/xml"> <wrapper> <secret>{secret}</secret> <config> <environment>{environment}</environment> <protocol>{protocol}</protocol> </config> </wrapper> </Payload> </Set> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Die Syntax für den Zugriff auf Ablaufvariablen in <Set> ist die Verwendung von geschweiften Klammern.
Setzen Sie das Attribut contentType des Elements <Payload> auf „application/xml“.
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
Optional können Sie die Ergebnisse über ein Dienstprogramm wie xmllint instanziieren, sodass die XML in einer übersichtlichen Struktur angezeigt wird:
curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
Der Antworttext sollte so aussehen:
<wrapper>
<secret>42</secret>
<config>
<environment>test</environment>
<protocol>gopher</protocol>
</config>
</wrapper>