Quoi
La règle HTTPModifier peut modifier un message de requête ou de réponse existant.
La règle vous permet d'effectuer les actions suivantes sur ces messages :
- Ajouter de nouveaux paramètres de formulaire, d'en-têtes ou de requête à un message.
- Supprimer des en-têtes, des paramètres de requête et des paramètres de formulaire d'un message.
- Définir la valeur des propriétés existantes dans un message.
Avec HTTPModifier, vous pouvez ajouter, modifier ou supprimer les propriétés de la requête ou de la réponse. Vous pouvez également utiliser la règle HTTPModifier pour créer un message de requête ou de réponse personnalisé et le transmettre à une autre cible, comme décrit dans la section Créer des messages de requête personnalisés.
La règle HTTPModifier peut créer des variables de flux avec les éléments enfants suivants :
L'ordre dans lequel vous organisez les éléments <Add>
, <Set>
et <Remove>
est important. La règle exécute ces actions dans l'ordre dans lequel elles apparaissent dans la configuration de la règle. Si vous devez supprimer tous les en-têtes, puis définir un en-tête spécifique, vous devez inclure l'élément <Remove>
avant l'élément <Set>
.
Cette règle est une règle standard qui peut être déployée sur n'importe quel type d'environnement. Pour en savoir plus sur les types de règles et la disponibilité avec chaque type d'environnement, consultez la section Types de règles.
Élément <HTTPModifier>
Définit une règle HTTPModifier.
Valeur par défaut | Consultez l'onglet Règles par défaut ci-dessous. |
Obligatoire ? | Obligatoire |
Type | Objet complexe |
Élément parent | N/A |
Éléments enfants |
<Add> <AssignTo> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
L'élément <HTTPModifier>
utilise la syntaxe suivante :
Syntaxe
L'élément <HTTPModifier>
utilise la syntaxe suivante :
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- All HTTPModifier child elements are optional --> <Add> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <Path>PATH</Path> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Règle par défaut
L'exemple suivant montre les paramètres par défaut lorsque vous ajoutez une règle HTTPModifier à votre flux dans l'interface utilisateur d'Apigee :
<HTTPModifier continueOnError="false" enabled="true" name="http-modifier-default"> <DisplayName>HTTP Modifier-1</DisplayName> <Properties/> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </HTTPModifier>
Lorsque vous insérez une nouvelle règle HTTPModifier dans l'interface utilisateur d'Apigee, le modèle contient des bouchons pour toutes les opérations possibles. En règle générale, vous devez sélectionner les opérations que vous souhaitez effectuer avec cette règle et supprimer le reste des éléments enfants. Par exemple, si vous souhaitez effectuer une opération d'ajout, utilisez l'élément <Add>
et supprimez <Remove>
et d'autres éléments enfants de la règle pour la rendre plus lisible.
Cet élément possède les attributs suivants qui sont communs à toutes les règles :
Attribut | Par défaut | Obligatoire ? | Description |
---|---|---|---|
name |
ND | Obligatoire |
Nom interne de la règle. La valeur de l'attribut Vous pouvez également utiliser l'élément |
continueOnError |
faux | Facultatif | Définissez sur false pour afficher une erreur en cas d'échec d'une règle. Il s'agit du comportement attendu pour la plupart des règles. Définissez sur true pour que l'exécution du flux se poursuive même après l'échec d'une règle. Voir aussi :
|
enabled |
true | Facultatif | Définissez sur true pour appliquer la règle. Définissez sur false pour désactiver la règle. La règle ne sera pas appliquée même si elle reste associée à un flux. |
async |
faux | Obsolète | Cet attribut est obsolète. |
Le tableau suivant fournit une description détaillée des éléments enfants de <HTTPModifier>
:
Élément enfant | Obligatoire ? | Description |
---|---|---|
Opérations courantes | ||
<Add> |
Facultatif | Ajoute des informations à l'objet message spécifié par l'élément <AssignTo> .
Pour écraser des en-têtes ou des paramètres existants, utilisez l'élément |
<Remove> |
Facultatif | Supprime les éléments spécifiés de la variable de message spécifiée dans l'élément <AssignTo> . |
<Set> |
Facultatif | Remplace les valeurs des propriétés existantes dans la requête ou la réponse qui est spécifiée par l'élément <AssignTo> .
|
Autres éléments enfants | ||
<AssignTo> |
Facultatif | Spécifie le message sur lequel la règle HTTPModifier est appliquée. Il peut s'agir de la requête ou de la réponse standard, ou d'un nouveau message personnalisé. |
<IgnoreUnresolvedVariables> |
Facultatif | Détermine si le traitement s'arrête lorsqu'une variable non résolue est rencontrée. |
Chacun des éléments enfants est décrit dans les sections ci-après.
Exemples
Les exemples suivants illustrent certaines des manières dont vous pouvez utiliser la règle HTTPModifier :
1 : Ajouter un en-tête
L'exemple suivant ajoute un en-tête à la requête avec l'élément <Add>
. La variable VerifyAPIKey de cet exemple est générée par la règle VerifyAPIKey :
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
2 : Modifier la réponse
L'exemple suivant modifie un objet de réponse existant en lui ajoutant un en-tête :
<HTTPModifier name="HM-modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </HTTPModifier>
Cet exemple ne crée pas de message. À la place, il modifie un message de réponse existant en ajoutant un en-tête HTTP.
Comme cet exemple spécifie response
comme nom de variable dans l'élément <AssignTo>
, cette règle modifie l'objet de réponse initialement défini avec les données renvoyées par le serveur cible.
L'en-tête HTTP ajouté au message de réponse par cette règle est dérivé d'une variable renseignée par la règle LookupCache. Par conséquent, le message de réponse modifié par cette règle HTTPModifier contient un en-tête HTTP qui indique si les résultats ont été extraits du cache ou non. La définition d'en-têtes dans la réponse peut être utile pour le débogage et le dépannage.
3 : Supprimer le paramètre de requête
L'exemple suivant supprime le paramètre de requête apikey
de la requête :
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Il est recommandé de supprimer le paramètre de requête apikey
du message de requête lorsque vous utilisez la règle VerifyAPIKey pour l'authentification de l'utilisateur. Cette démarche permet d'empêcher la transmission des informations de clé sensibles à la cible principale.
Référence d'élément enfant
Cette section décrit les éléments enfants de <HTTPModifier>
.
<Add>
Ajoute des informations à la requête ou à la réponse, spécifiée par l'élément <AssignTo>
.
L'élément <Add>
ajoute les propriétés au message qui n'existent pas dans le message d'origine. Notez que <Set>
fournit également cette fonctionnalité. Pour modifier les valeurs des propriétés existantes, utilisez l'élément <Set>
.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Type complexe |
Élément parent |
<HTTPModifier>
|
Éléments enfants |
<FormParams> <Headers> <QueryParams> |
L'élément <Add>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> </HTTPModifier>
Exemple 1
L'exemple suivant utilise l'élément <FormParams>
pour obtenir les valeurs de trois paramètres de chaîne de requête de la requête initiale et les définir en tant que paramètres de formulaire sur la requête de point de terminaison cible :
<HTTPModifier name="HM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 2
L'exemple suivant utilise l'élément <Headers>
pour ajouter un en-tête partner-id
à la requête qui sera envoyée au point de terminaison cible :
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 3
L'exemple suivant utilise l'élément <QueryParams>
pour ajouter à la requête un seul paramètre de requête doté d'une valeur statique :
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Cet exemple utilise <Add>
dans le flux de requêtes. Si vous consultez les résultats dans un outil tel que l'outil Debug, la requête envoyée à https://example-target.com/get
devient https://example-target.com/get?myParam=42
.
Les éléments enfants de <Add>
acceptent la substitution de chaîne dynamique, appelée modélisation de message.
<FormParams>
(enfant de <Add>
)
Ajoute des paramètres de formulaire au message de requête. Cet élément n'a aucun effet sur le message de réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <FormParam> |
Élément parent |
<Add>
|
Éléments enfants |
<FormParam> |
L'élément <FormParams>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> </Add> </HTTPModifier>
Exemple 1
L'exemple suivant ajoute un seul paramètre de formulaire (answer
) et une valeur statique (42
) à la requête :
<HTTPModifier name="HM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 2
L'exemple suivant récupère la valeur du paramètre de requête name
et l'ajoute à la requête en tant que paramètre de formulaire, puis le supprime :
<HTTPModifier name="HM-Swap-QueryParam-to-FormParams"> <Add> <FormParam name="name">{request.queryparam.name} </Add> <Remove> <QueryParam name="name"/> </Remove> </HTTPModifier>
Notez que cet exemple ne spécifie pas de cible avec <AssignTo>
. Cette règle ajoute le paramètre à la requête uniquement.
Exemple 3
L'exemple suivant ajoute plusieurs paramètres de formulaire à la requête :
<HTTPModifier name="HM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Cet exemple récupère les paramètres de chaîne de requête de la requête d'origine et les ajoute en tant que paramètres de formulaire avec des noms différents. Ensuite, les paramètres de requête d'origine sont supprimés. Apigee envoie la requête modifiée au point de terminaison cible.
Vous pouvez utiliser l'outil Debug pour consulter le flux. Le corps de la requête contient les données de formulaire encodées en URL qui ont été initialement transmises en tant que paramètres de chaîne de requête :
username=nick&zip_code=90210&default_language=en
Vous ne pouvez utiliser <FormParams>
que lorsque les critères suivants sont remplis :
- Verbes HTTP :
GET
,POST
- Type de message : Requête
- Un des éléments suivants (ou les deux) :
- Données de formulaire : défini sur une valeur, ou
""
(la chaîne vide). Par exemple, aveccurl
, ajoutez-d ""
à votre requête. - En-tête
Content-Length
: défini sur 0 (si aucune donnée ne figure dans la requête d'origine, sinon, la longueur actuelle, en octets). Par exemple, aveccurl
, ajoutez-H "Content-Length: 0"
à votre requête.
- Données de formulaire : défini sur une valeur, ou
Exemple :
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
Lorsque vous ajoutez <FormParams>
, Apigee définit l'en-tête Content-Type
de la requête sur application/x-www-form-urlencoded
avant d'envoyer le message au service cible.
<Headers>
(enfant de <Add>
)
Ajoute des en-têtes à la requête ou à la réponse spécifiée, indiquée par l'élément <AssignTo>
.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <Header> |
Élément parent |
<Add>
|
Éléments enfants |
<Header> |
L'élément <Headers>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Add> </HTTPModifier>
Exemple 1
L'exemple suivant ajoute un en-tête partner-id
au message de requête et attribue la valeur de la variable de flux verifyapikey.VAK-1.developer.app.partner-id
à cet en-tête.
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
<QueryParams>
(enfant de <Add>
)
Ajoute des paramètres de requête à la requête. Cet élément n'a aucun effet sur une réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <QueryParam> |
Élément parent |
<Add>
|
Éléments enfants |
<QueryParam> |
L'élément <QueryParams>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> </HTTPModifier>
Exemple 1
L'exemple suivant ajoute le paramètre de requête myParam
à la requête et lui attribue la valeur 42
:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Vous ne pouvez utiliser <QueryParams>
que lorsque les critères suivants sont remplis :
- Verbes HTTP :
GET
,POST
- Type de message : Requête
De plus, vous ne pouvez définir des paramètres de requête que lorsque l'attribut type
de l'élément <AssignTo>
est un message de requête. Les paramètres définis dans la réponse n'ont aucun effet.
Si vous définissez un tableau de paramètres de requête vide dans votre règle (<Add><QueryParams/></Add>
), celle-ci n'ajoute aucun paramètre de requête. Cela revient à omettre <QueryParams>
.
<AssignTo>
Détermine l'objet sur lequel la règle HTTPModifier est appliquée. Vous disposez des options suivantes :
- Message de requête : le
request
reçu par le proxy d'API - Message de réponse : le message
response
renvoyé par le serveur cible - Message personnalisé : requête ou objet de réponse personnalisé
Notez que dans certains cas, vous ne pouvez pas modifier l'objet sur lequel agit la règle HTTPModifier.
Par exemple, vous ne pouvez pas utiliser <Add>
ou <Set>
pour ajouter ou modifier des paramètres de requête (<QueryParams>
) ou des paramètres de formulaire (<FormParams>
) sur la réponse. Vous ne pouvez manipuler que les paramètres de requête et les paramètres de formulaire sur la requête.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Chaîne |
Élément parent |
<HTTPModifier>
|
Éléments enfants | Aucun |
Si vous ne spécifiez pas <AssignTo>
, ou si vous spécifiez l'élément <AssignTo>
, mais ne spécifiez pas de valeur textuelle pour l'élément, la règle agit sur la requête ou la réponse par défaut, à savoir : en fonction de l'emplacement d'exécution de la règle. Si la règle s'exécute dans le flux de requête, elle a une incidence sur le message de la requête. Si elle s'exécute dans le flux de réponse, la règle affecte par défaut la réponse.
L'élément <AssignTo>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> </HTTPModifier>
Exemple 1
L'exemple suivant ne spécifie aucun message dans le texte du <AssignTo>
. Cela implique que la règle agira sur le message request
ou response
, selon l'emplacement où la règle s'exécute.
<HTTPModifier name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/>-- no-op --> ... </HTTPModifier>
Si vous spécifiez createNew="false"
et que vous ne fournissez pas explicitement de nom de message, les autres attributs de <AssignTo>
ne sont pas pertinents. Dans ce cas, vous pouvez omettre complètement l'élément <AssignTo>
.
Exemple 2
L'exemple suivant crée un objet de requête, en remplaçant l'objet existant :
<HTTPModifier name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> ... </HTTPModifier>
Lorsque vous créez un nouvel objet de requête ou de réponse, les autres éléments de la règle HTTPModifier (tels que <Add>
et <Set>
) agissent sur ce nouvel objet de requête.
Vous pourrez accéder ultérieurement au nouvel objet de requête dans d'autres règles du flux ou envoyer le nouvel objet de requête à un service externe avec une règle ServiceCallout.
Exemple 3
L'exemple suivant crée un objet de requête nommé MyRequestObject
:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Lorsque vous créez un nouvel objet de requête ou de réponse, les autres éléments de la règle HTTPModifier (tels que <Add>
et <Set>
) agissent sur ce nouvel objet de requête.
Vous pourrez accéder ultérieurement au nouvel objet de requête dans d'autres règles du flux ou envoyer le nouvel objet de requête à un service externe avec une règle ServiceCallout.
Le tableau suivant décrit les attributs de <AssignTo>
:
Attribut | Description | Obligatoire ? | Type |
---|---|---|---|
createNew |
Détermine si cette règle crée un message lors de l'attribution de valeurs. Si la valeur est Si la valeur est
Si
|
Facultatif | Booléen |
transport |
Spécifie le type de transport pour le type de message de requête ou de réponse. La valeur par défaut est |
Facultatif | Chaîne |
type |
Indique le type du nouveau message, lorsque createNew est défini sur true . Les valeurs valides sont request ou response .
La valeur par défaut est |
Facultatif | Chaîne |
<DisplayName>
Utilisez-le, en plus de l'attribut name
, pour appliquer un libellé à la règle dans l'éditeur de proxys de l'interface de gestion en utilisant un nom différent et plus naturel.
L'élément <DisplayName>
est commun à toutes les règles.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif. Si vous omettez <DisplayName> , la valeur de l'attribut name de la règle est utilisée. |
Type | Chaîne |
Élément parent | <PolicyElement> |
Éléments enfants | Aucun |
L'élément <DisplayName>
utilise la syntaxe suivante :
Syntaxe
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Exemple
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
L'élément <DisplayName>
ne comporte aucun attribut ni élément enfant.
<IgnoreUnresolvedVariables>
Détermine si le traitement s'arrête lorsqu'une variable non résolue est rencontrée.
Valeur par défaut | Faux |
Obligatoire ? | Facultatif |
Type | Booléen |
Élément parent |
<HTTPModifier>
|
Éléments enfants | Aucun |
Définissez la valeur sur true
pour ignorer les variables non résolues et poursuivre le traitement, sinon false
. La valeur par défaut est false
.
Définir l'élément <IgnoreUnresolvedVariables>
sur true
n'a pas le même objet que définir l'élément continueOnError
de <HTTPModifier>
sur true
car il est spécifique à la définition et à l'obtention de valeurs de variables. Si vous définissez continueOnError
sur true
, Apigee ignore toutes les erreurs, pas seulement celles rencontrées lors de l'utilisation de variables.
L'élément <IgnoreUnresolvedVariables>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </HTTPModifier>
Exemple 1
L'exemple suivant définit <IgnoreUnresolvedVariables>
sur true
:
<HTTPModifier name="HM-Set-Headers"> <Set> <Headers> <Header name='new-header'>{possibly-defined-variable}<Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </HTTPModifier>
Comme <IgnoreUnresolvedVariables>
est défini sur true
, si la variable possibly-defined-variable
n'est pas définie, cette règle ne génère pas d'erreur.
<Remove>
Supprime les en-têtes, les paramètres de requête ou les paramètres de formulaire d'un message. Un tag vide supprime tous les paramètres correspondants, y compris les en-têtes, les paramètres de formulaire et les paramètres de requête.
Le message affecté peut être une requête ou une réponse. Vous pouvez spécifier le message sur lequel agit <Remove>
en utilisant l'élément <AssignTo>
.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Type complexe |
Élément parent |
<HTTPModifier>
|
Éléments enfants |
<FormParams> <Headers> <QueryParams> |
Un cas d'utilisation courant de <Remove>
consiste à supprimer un paramètre de requête ou un en-tête contenant des informations sensibles de l'objet de requête entrant afin d'éviter de le transmettre au serveur backend.
L'élément <Remove>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> </HTTPModifier>
Exemple 1
L'exemple suivant supprime tous les paramètres de formulaire et un paramètre de requête de l'objet request
:
<HTTPModifier name="HM-remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 2
L'exemple suivant supprime tout d'un objet de message:
<HTTPModifier name="HM-remove-3"> <Remove/> <AssignTo>request</AssignTo> </HTTPModifier>
En règle générale, vous ne devez effectuer cette opération que si vous utilisez l'élément <Set>
pour définir des valeurs de remplacement dans le message.
<FormParams>
(enfant de <Remove>
)
Supprime les paramètres de formulaire spécifiés de la requête. Cet élément n'a aucun effet sur une réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <FormParam> ou tableau vide |
Élément parent |
<Remove>
|
Éléments enfants |
<FormParam> |
L'élément <FormParams>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> </Remove> </HTTPModifier>
Exemple 1
L'exemple suivant supprime trois paramètres de formulaire de la requête :
<HTTPModifier name="HM-remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 2
L'exemple suivant supprime tous les paramètres de formulaire de la requête :
<HTTPModifier name="HM-remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 3
S'il existe plusieurs paramètres de formulaire du même nom, utilisez la syntaxe suivante :
<HTTPModifier name="HM-remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Cet exemple supprime f1
, f2
et la deuxième valeur de f3
. Si f3
n'a qu'une seule valeur, le paramètre n'est pas supprimé.
Vous ne pouvez utiliser <FormParams>
que si les critères suivants sont remplis :
- Type de message : Requête
Content-Type
:application/x-www-form-urlencoded
<Headers>
(enfant de <Remove>
)
Supprime les en-têtes HTTP spécifiés de la requête ou de la réponse, indiquée par l'élément <AssignTo>
.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <Header> ou tableau vide |
Élément parent |
<Remove>
|
Éléments enfants |
<Header> |
L'élément <Headers>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Remove> </HTTPModifier>
Exemple 1
L'exemple suivant supprime l'en-tête user-agent
de la requête :
<HTTPModifier name="HM-remove-one-header"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 2
L'exemple suivant supprime tous les en-têtes de la requête :
<HTTPModifier name="HM-remove-all-headers"> <Remove> <Headers/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 3
Si plusieurs en-têtes portent le même nom, utilisez la syntaxe suivante :
<HTTPModifier name="HM-remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Cet exemple supprime h1
, h2
et la deuxième valeur de h3
de la requête. Si h3
n'a qu'une seule valeur, le paramètre n'est pas supprimé.
<QueryParams>
(enfant de <Remove>
)
Supprime les paramètres de requête spécifiés de la requête. Cet élément n'a aucun effet sur une réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <QueryParam> ou tableau vide |
Élément parent |
<Remove>
|
Éléments enfants |
<QueryParam> |
L'élément <QueryParams>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> </HTTPModifier>
Exemple 1
L'exemple suivant permet de supprimer un seul paramètre de requête de la requête :
<HTTPModifier name="HM-remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 2
L'exemple suivant supprime tous les paramètres de la requête :
<HTTPModifier name="HM-remove-queryparams-2"> &tl;Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 3
S'il existe plusieurs paramètres de requête portant le même nom, utilisez la syntaxe suivante
<HTTPModifier name="HM-remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Cet exemple supprime qp1
, qp2
et la deuxième valeur de qp3
de la requête. Si qp3
n'a qu'une seule valeur, le paramètre n'est pas supprimé.
Exemple 4
L'exemple suivant supprime le paramètre de requête apikey
de la requête :
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Vous ne pouvez utiliser <QueryParams>
que lorsque les critères suivants sont remplis :
- Verbes HTTP :
GET
,POST
- Type de message : Requête
<Set>
Définit les informations dans le message de requête ou de réponse, spécifié par l'élément <AssignTo>
. <Set>
écrase les en-têtes ou les paramètres de requête ou de formulaire qui existent déjà dans le message d'origine, ou en ajoute de nouveaux.
Les en-têtes et les paramètres de requête et de formulaire dans un message HTTP peuvent contenir plusieurs valeurs. Pour ajouter des valeurs supplémentaires à un en-tête ou à un paramètre, utilisez plutôt l'élément <Add>
.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Type complexe |
Élément parent |
<HTTPModifier>
|
Éléments enfants |
<FormParams> <Headers> <Path> <QueryParams> <StatusCode> <Verb> <Version> |
L'élément <Set>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <Path>PATH</Path> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Exemple
L'exemple suivant définit un en-tête spécifique. Lorsque cette règle est associée dans le flux de requête, elle permet au système en amont de recevoir un en-tête supplémentaire qui n'a pas été inclus dans la requête entrante d'origine.
<HTTPModifier name="HM-Set-Header"> <Set> <Headers> <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header> </Headers> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
<FormParams>
(enfant de <Set>
)
Remplace les paramètres de formulaire existants sur une requête et les remplace par les nouvelles valeurs que vous spécifiez avec cet élément. Cet élément n'a aucun effet sur une réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <FormParam> |
Élément parent |
<Set>
|
Éléments enfants |
<FormParam> |
L'élément <FormParams>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> </Set> </HTTPModifier>
Exemple 1
L'exemple suivant définit un paramètre de formulaire appelé myparam
sur la valeur de la variable request.header.myparam
dans une nouvelle requête personnalisée :
<HTTPModifier name="HM-set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request>>MyCustomRequest</AssignTo> </HTTPModifier>
Vous ne pouvez utiliser <FormParams>
que si les critères suivants sont remplis :
- Verbe HTTP :
POST
- Type de message : Requête
Si vous définissez des paramètres de formulaire vides dans votre règle (<Add><FormParams/></Add>
), celle-ci n'ajoute aucun paramètre de formulaire. Cela revient à omettre le paramètre <FormParams>
.
<Set>
remplace la variable Content-Type
du message par application/x-www-form-urlencoded
avant de l'envoyer au point de terminaison cible.
<Headers>
(enfant de <Set>
)
Remplace les en-têtes HTTP existants dans la requête ou la réponse, qui est spécifiée par l'élément <AssignTo>
.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <Header> |
Élément parent |
<Set>
|
Éléments enfants |
<Header> |
L'élément <Headers>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Set> </HTTPModifier>
Exemple 1
L'exemple suivant définit l'en-tête x-ratelimit-remaining
sur la valeur de la variable ratelimit.Quota-1.available.count
:
<HTTPModifier name="HM-Set-RateLimit-Header"> <Set> <Headers> <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header> </Headers> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Si vous définissez des en-têtes vides dans votre stratégie (<Set><Headers/></Set>
), la règle ne définit aucun en-tête. Cela aura le même effet que d'omettre <Headers>
.
<Path>
(enfant de <Set>
)
<QueryParams>
(enfant de <Set>
)
Remplace les paramètres de requête existants dans la requête par de nouvelles valeurs. Cet élément n'a aucun effet sur une réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <QueryParam> |
Élément parent |
<Set>
|
Éléments enfants |
<QueryParam> |
L'élément <QueryParams>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Set> </HTTPModifier>
Exemple 1
L'exemple suivant définit le paramètre de requête address
sur la valeur de la variable request.header.address
:
<HTTPModifier name="HM-set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </HTTPModifier>
Vous ne pouvez utiliser <QueryParams>
que lorsque les critères suivants sont remplis :
- Verbes HTTP :
GET
,POST
- Type de message : Requête
Si vous définissez des paramètres de requête vides dans votre règle (<Set><QueryParams/></Set>
), celle-ci ne définit aucun paramètre de requête. Cela revient à omettre <QueryParams>
.
<StatusCode>
(enfant de <Set>
)
Définit le code d'état sur la réponse. Cet élément n'a aucun effet sur une requête.
Valeur par défaut | '200' (lorsque l'attribut createNew de l'élément <AssignTo> est défini sur "true") |
Obligatoire ? | Facultatif |
Type | Chaîne ou VARIABLE |
Élément parent |
<Set>
|
Éléments enfants | Aucun |
L'élément <StatusCode>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> </Set> </HTTPModifier>
Exemple 1
L'exemple suivant définit un code d'état simple :
<HTTPModifier name="HM-set-statuscode-404"> <Set> <StatusCode>404<<StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Exemple 2
Le contenu de <StatusCode>
est traité comme un modèle de message. Cela signifie qu'un nom de variable placé entre accolades est remplacé par la valeur de la variable référencée lors de l'exécution, comme illustré dans l'exemple suivant :
<HTTPModifier name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Vous ne pouvez utiliser <StatusCode>
que lorsque les critères suivants sont remplis :
- Type de message : réponse
<Verb>
(enfant de <Set>
)
Définit le verbe HTTP sur la requête. Cet élément n'a aucun effet sur une réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Chaîne ou VARIABLE |
Élément parent |
<Set>
|
Éléments enfants | Aucun |
L'élément <Verb>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </HTTPModifier>
Exemple 1
L'exemple suivant définit un verbe simple sur la requête :
<HTTPModifier name="HM-set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Exemple 2
Le contenu de <Verb>
est traité comme un modèle de message. Cela signifie qu'un nom de variable placé entre accolades sera remplacé au moment de l'exécution par la valeur de la variable référencée.
L'exemple suivant utilise une variable pour renseigner un verbe :
<HTTPModifier name="HM-set-verb-to-dynamic-value"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Vous ne pouvez utiliser <Verb>
que lorsque les critères suivants sont remplis :
- Type de message : Requête
<Version>
(enfant de <Set>
)
Définit la version HTTP sur une requête. Cet élément n'a aucun effet sur une réponse.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Chaîne ou VARIABLE |
Élément parent |
<Set>
|
Éléments enfants | Aucun |
L'élément <Version>
utilise la syntaxe suivante :
Syntaxe
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Exemple 1
L'exemple suivant définit le numéro de version sur 1.1
:
<HTTPModifier name="HM-set-version-1"> <Set> <Version>1.1</Version> </Set> </HTTPModifier>
Exemple 2
La variable suivante utilise une variable entre accolades pour définir le numéro de version :
<HTTPModifier name="HM-set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Le contenu de <Version>
est traité comme un modèle de message. Cela signifie qu'un nom de variable placé entre accolades sera remplacé lors de l'exécution par la valeur de la variable référencée.
Vous ne pouvez utiliser <Version>
que lorsque les critères suivants sont remplis :
- Type de message : Requête
Créer des messages de demande personnalisés
Vous pouvez utiliser la règle HTTPModifier pour créer un message de requête personnalisé. Après avoir créé une requête personnalisée, vous pouvez l'utiliser de la manière suivante :
- Accéder à ses variables dans d'autres règles
- La transmettre à un service externe
Pour créer un message de requête personnalisé, utilisez l'élément <AssignTo>
dans votre règle HTTPModifier. Définissez createNew
sur true
et spécifiez le nom du nouveau message dans le corps de l'élément, comme le montre l'exemple suivant :
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Par défaut, Apigee n'effectue aucune action par rapport au message de requête personnalisé. Une fois créé, Apigee poursuit le flux avec la requête d'origine. Pour utiliser la requête personnalisée, ajoutez une règle utilisant le message de requête puis référencez explicitement le message de requête nouvellement créé dans la configuration de cette règle. Cela vous permet de transmettre la requête personnalisée à un point de terminaison de service externe.
Les exemples suivants créent des messages de requête personnalisés :
Exemple 1
L'exemple suivant crée un objet de requête personnalisé avec HTTPModifier :
<HTTPModifier name="HTTPModifier-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </HTTPModifier>
Cet exemple :
- Crée un objet de message de requête appelé
MyCustomRequest
. - Sur MyCustomRequest, cette règle :
- Définit le paramètre de requête
address
du message personnalisé sur la valeur du paramètre de requêteaddy
de la requête entrante. - Définit le verbe HTTP sur
GET
.
- Définit le paramètre de requête
- Définit
<IgnoreUnresolvedVariables>
surfalse
. Lorsque la valeur de<IgnoreUnresolvedVariables>
estfalse
, si l'une des variables référencées dans la configuration de la règle n'existe pas, Apigee entre dans l'état d'erreur dans le flux d'API.
Exemple 2
Voici un autre exemple illustrant la création d'un objet de requête personnalisé avec la règle HTTPModifier :
<HTTPModifier name="HTTPModifier-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> </Set> </HTTPModifier>
Cet exemple crée une requête personnalisée appelée partner.request
. Il définit ensuite le <Verb>
sur la nouvelle requête.
Vous pouvez accéder aux différentes propriétés d'un message personnalisé dans une autre règle HTTPModifier qui se produit ultérieurement dans le flux. L'exemple suivant récupère la valeur d'un en-tête à partir d'une réponse personnalisée nommée et la place dans un nouvel en-tête du message de requête :
<HTTPModifier name="HM-Set-Header"> <AssignTo>request</AssignTo> <Set> <Headers> <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header> </Headers> </Set> </HTTPModifier>
Codes d'erreur
Cette section décrit les codes d'erreur et les messages d'erreur renvoyés et les variables d'erreur définies par Apigee lorsque cette règle déclenche une erreur. Ces informations sont importantes si vous développez des règles de défaillance afin de gérer les pannes. Pour en savoir plus, consultez les pages Ce que vous devez savoir à propos des erreurs liées aux règles et Gérer les pannes.
Erreurs d'exécution
Ces erreurs peuvent se produire lors de l'exécution de la règle.
Code d'erreur | État HTTP | Cause | Corriger |
---|---|---|---|
entities.UnresolvedVariable |
500 |
Variable de modèle de message non définie ou hors champ d'application. | |
steps.httpmodifier.InvalidStatusCode |
500 |
La valeur résolue du code d'état n'est pas valide. Pour en savoir plus, consultez la chaîne d'erreur. | build |
Erreurs de déploiement
Ces erreurs peuvent se produire lorsque vous déployez un proxy contenant cette règle.
Nom de l'erreur | Cause | Corriger |
---|---|---|
InvalidIndex |
Si l'index spécifié dans les éléments <Remove> de la règle HTTPModifier est 0 ou un nombre négatif, le déploiement du proxy d'API échoue. |
build |
Variables de panne
Ces variables sont définies lorsque cette règle déclenche une erreur au moment de l'exécution. Pour en savoir plus, consultez la section Ce que vous devez savoir sur les erreurs liées aux règles.
Variables | Lieu | Exemple |
---|---|---|
httpmodifier.POLICY_NAME.failed |
POLICY_NAME est le nom spécifié par l'utilisateur de la règle qui a provoqué l'erreur. | httpmodifier.HM-SetResponse.failed = true |
Exemple de réponse d'erreur
{ "fault":{ "detail":{ "errorcode":"steps.httpmodifier.InvalidStatusCode" }, "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request" } }
Exemple de règle de défaillance
<FaultRule name="HTTPModifier Faults"> <Step> <Name>HM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "InvalidStatusCode")</Condition> </Step> <Condition>(httpmodifier.failed = true)</Condition> </FaultRule>
Schémas
Chaque type de règle est défini par un schéma XML (.xsd
). Pour référence, des schémas de règles sont disponibles sur GitHub.