L'exemple suivant utilise trois règles d'attribution de messages :
<!-- 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>
Dans la première règle, l'élément <AssignVariable>
crée et définit trois variables dans la requête. Chaque élément <Name>
spécifie un nom de variable et <Value>
spécifie la valeur.
La deuxième règle utilise l'élément <AssignVariable>
pour lire les valeurs et créer trois variables :
<!-- 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>
Dans la seconde règle, l'élément <Ref>
fait référence à la variable source, et les éléments <Name>
spécifient le nom des nouvelles variables. Si la variable référencée par l'élément <Ref>
n'est pas accessible, vous pouvez utiliser la valeur spécifiée par l'élément <Value>
.
Pour essayer ces règles, procédez comme suit :
<Set>
pour ajouter les variables à la réponse. L'exemple suivant construit une charge utile XML dans la réponse renvoyée par Edge au client :
<!-- 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>
Notez que la syntaxe permettant d'accéder aux variables de flux dans <Set>
consiste à les placer entre accolades.
Veillez à définir l'attribut contentType
de l'élément <Payload>
sur "application/xml".
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
Vous pouvez également lier les résultats via un utilitaire tel que xmllint
pour que le code XML s'affiche dans une structure correctement formatée :
curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
Le corps de la réponse doit se présenter comme suit :
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>