Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.
SourceMessageNotAvailable
Code d'erreur
steps.extractvariables.SourceMessageNotAvailable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SourceMessageNotAvailable" } } }
Cause
Cette erreur se produit si la variable message spécifiée dans l'élément <Source> de la stratégie Extract Variables est l'une des suivantes :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée), ou
- impossible à résoudre (non définie),
Par exemple, cette erreur se produit si la stratégie d'extraction de variables s'exécute dans le flux de requête, mais que l'élément <Source>
est défini sur la variable response
ou error
, qui n'existe pas. dans le flux de requête.
Diagnostic
Identifiez la règle des variables d'extraction où l'erreur s'est produite et le nom de la variable qui n'est pas disponible. Vous pouvez trouver ces deux éléments dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans la chaîne d'erreur suivante, le nom de la stratégie estExtractVariables-1
et la variable estresponse
:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"
Dans la règle XML d'extraction de variables ayant échoué, vérifiez que le nom de la variable définie dans l'élément correspond au nom de la variable identifié dans la chaîne d'erreur (étape 1 ci-dessus). Par exemple, la règle Extract Variables suivante spécifie une variable nommée
response
dans l'élément, qui correspond au contenu de la chaîne d'erreur:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>
Déterminez si la variable utilisée dans l'élément
<Source>
est définie et disponible dans le flux dans lequel la règle Extraire les variables est exécutée.Si la variable est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée), ou
- impossible à résoudre (non définie),
alors il s'agit de la cause de l'erreur.
Par exemple, supposons que la règle Extraire les variables présentée ci-dessus s'exécute dans le flux request. Rappelez-vous que la variable
response
est utilisée dans l'élément<Source>
de la règle Extract Variables. La variableresponse
n'est disponible que dans le flux de réponse.Comme la variable
response
n'existe pas dans le flux de requête, vous recevez le code d'erreur :steps.extractvariables.SourceMessageNotAvailable
Solution
Vérifiez que la variable définie dans l'élément <Source>
de la stratégie d'extraction de variables ayant échoué a été définie et existe dans le flux où la règle s'exécute.
Pour corriger la règle Extract Variables présentée ci-dessus, vous pouvez modifier l'élément <Source>
pour utiliser la variable request
telle qu'elle existe dans le flux de requête:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
Code d'erreur
steps.extractvariables.SetVariableFailed
Corps de la réponse d'erreur
{ "fault": { "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SetVariableFailed" } } }
Cause
Cette erreur se produit si la stratégie Extract Variables n'a pas pu définir la valeur sur une variable. C'est généralement le cas si vous essayez d'attribuer des valeurs à plusieurs variables dont les noms commencent par les mêmes mots dans un format imbriqué séparé par des points.
Par exemple, imaginons que vous créez/attribuez une valeur à une variable var.color
. Dans ce cas, color
est alloué en tant que nœud d'objet. Si vous essayez ensuite d'attribuer une valeur à une autre variable var.color.next
, l'opération échouera, car color
est déjà alloué et il n'est pas autorisé à lui attribuer une autre variable.
Diagnostic
Identifiez la règle des variables d'extraction où l'erreur s'est produite et le nom de la variable pour laquelle la valeur n'a pas pu être définie. Vous pouvez trouver ces deux éléments dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans la chaîne d'erreur suivante, le nom de la stratégie estExtractColors
et la variable estvar.color.next
:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"
Dans la règle XML Extract Variables ayant échoué, vérifiez que le nom de la variable correspond au nom de la variable identifié dans la chaîne d'erreur (étape 1 ci-dessus). Par exemple, la stratégie suivante tente d'attribuer une valeur d'un paramètre de requête à une variable nommée
var.color.next
(la valeur qui s'affiche dans la chaîne d'erreur):<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{color.next}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>
Examinez tous les noms de variables utilisés dans la stratégie d'extraction de variables ayant échoué. Si vous avez attribué une valeur à une autre variable dont le nom commence par le même nom que celui de la variable indiqué dans la chaîne d'erreur (étape 1 ci-dessus), c'est la cause du problème.
Dans l'exemple de règle d'extraction de variables présenté ci-dessus, notez que:
- La valeur du paramètre de requête nommé
color
est d'abord attribuée à une variablevar.color
(Remarque:var
est le préfixe de toutes les variables définies dans l'élément<VariablePrefix>
). ) - Dans l'attribution suivante, la valeur du paramètre de requête
nextcolor
est attribuée à une autre variablevar.color.next
. - Comme
var.color
est déjà allouée, la règle d'extraction de variables ne peut pas allouer d'autre variable imbriquéevar.color.next
. Vous recevez donc le code d'erreur suivant :steps.extractvariables.SetVariableFailed
- La valeur du paramètre de requête nommé
Solution
Assurez-vous que vous n'avez pas plusieurs noms de variables dont les noms commencent par les mêmes mots dans un format imbriqué séparé par des points.
Pour corriger la règle d'extraction de variables présentée ci-dessus, vous pouvez modifier le nom de la variable var.color.next
pour utiliser le nom de la variable var.nextcolor.
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractColors">
<DisplayName>ExtractColors</DisplayName>
<Source>request</Source>
<QueryParam name="color">
<Pattern ignoreCase="true">{color}</Pattern>
</QueryParam>
<QueryParam name="nextcolor">
<Pattern ignoreCase="true">{nextcolor}</Pattern>
</QueryParam>
<VariablePrefix>var</VariablePrefix>
</ExtractVariables>
En savoir plus
Pour plus d'informations, consultez ce post de la communauté.
InvalidJSONPath
Code d'erreur
steps.extractvariables.InvalidJSONPath
Corps de la réponse d'erreur
{ "fault": { "faultstring": "Invalid JSON path [path_name] in policy [policy_name].", "detail": { "errorcode": "steps.extractvariables.InvalidJSONPath" } } }
Cause
Cette erreur se produit si un chemin JSON non valide est utilisé dans l'élément <JSONPath>
de la règle d'extraction de variables. Par exemple, si une charge utile JSON ne possède pas l'objet Name
, mais que vous spécifiez Name
comme chemin d'accès dans la stratégie Extraire les variables, cette erreur se produit.
Diagnostic
Identifiez la stratégie d'extraction des variables où l'erreur s'est produite et le chemin JSON non valide. Vous pouvez trouver ces deux éléments dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans la chaîne d'erreur suivante, le nom de la stratégie estExtractJSONVariables
et le chemin JSON non valide est$.Name
:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."
Dans la règle XML d'extraction de variables ayant échoué, vérifiez que le chemin JSON défini dans l'élément
<JSONPath>
correspond au chemin identifié dans la chaîne d'erreur (étape 1 ci-dessus). Par exemple, la stratégie Extract Variables suivante spécifie le chemin JSON$.Name
, qui correspond au contenu de la chaîne d'erreur:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.Name</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>
Examinez l'élément
<Source>
et déterminez la charge utile JSON à partir de laquelle vous souhaitez extraire la variable. Par exemple, si l'élément<Source>
est défini surrequest
, la règle extrait la charge utile JSON de l'objet de la requête. S'il est défini surresponse
, il s'agit d'un objet de réponse.Dans l'exemple de stratégie d'extraction de variables présenté ci-dessus, l'élément
<Source>
est défini surresponse
, de sorte que les variables sont extraites de la charge utile JSON de la réponse.<Source>response</Source>
Examinez la charge utile JSON appropriée (déterminée à l'étape 3) et vérifiez si elle dispose de l'objet spécifié dans l'élément
<JSONPath>
. Si la charge utile JSON ne dispose pas de cet objet, c'est la cause de l'erreur.Par exemple, considérons que vous essayez d'extraire des variables de la charge utile de réponse JSON suivante:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }
Comme la charge utile de la réponse JSON ne possède pas l'objet
Name
, la stratégie Extraire les variables échoue et renvoie l'erreur que vous avez reçue:steps.extractvariables.InvalidJSONPath
.
Solution
Assurez-vous que seuls les objets faisant partie de la charge utile JSON à partir desquels les variables sont extraites sont spécifiés dans l'élément <JSONPath>
de la stratégie Extract Variables.
Pour corriger la règle d'extraction de variables présentée ci-dessus, vous pouvez modifier l'élément <JSONPath>
pour spécifier l'un des objets disponibles dans l'exemple de charge utile de réponse JSON (par exemple, les objets firstName
et lastName
sont valides). :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables">
<Source>response</Source>
<JSONPayload>
<Variable name="name" type="string">
<JSONPath>$.firstName</JSONPath>
</Variable>
</JSONPayload>
<VariablePrefix>employee</VariablePrefix>
</ExtractVariables>
ExecutionFailed
Code d'erreur
steps.extractvariables.ExecutionFailed
Corps de la réponse d'erreur
{ "fault": { "faultstring": "Failed to execute the ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.ExecutionFailed" } } }
Causes possibles
Les causes possibles de cette erreur sont les suivantes :
Cause | Description |
Charge utile d'entrée manquante | La charge utile d'entrée (JSON, XML) est vide. |
Entrée invalide ou incorrecte | L'entrée (JSON, XML, etc.) transmise à la règle est incorrecte ou non valide. |
Cause : charge utile d'entrée manquante
Si la stratégie Extraire les variables est censé extraire les variables d'une charge utile JSON ou XML, mais que le contenu (charge utile) de la variable spécifiée dans l'élément <Source>
est vide, cette erreur se produit.
Par exemple, si l'élément <Source>
de la stratégie d'extraction de variables est défini sur request
ou response
et qu'il est censé contenir une charge utile JSON ou XML, mais qu'il est vide, l'erreur se produit.
Diagnostic
Identifiez la règle Extract Variables où l'erreur s'est produite. Vous trouverez ces informations dans l'élément Failstring de la réponse d'erreur. Par exemple, dans la chaîne d'erreur suivante, le nom de la stratégie est
ExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"
Examinez l'élément
<Source>
dans la règle XML Extract Variables ayant échoué, puis déterminez le type d'entrée à partir duquel les variables sont extraites. Par exemple, la règle Extract Variables suivante a un élément<Source>
défini surresponse
et extrait les variables de la charge utile XML:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true"> <XMLPayload> <Namespaces/> <Variable name="City" type="string"> <XPath>/city</XPath> </Variable> </XMLPayload> <Source clearPayload="false">response</Source> </ExtractVariables>
Vérifiez si l'entrée qui est analysée par la règle Extraire les variables est vide. Si l'entrée est vide, c'est l'origine de l'erreur.
Dans l'exemple de stratégie d'extraction de variables présentée ci-dessus, la charge utile de la réponse (c'est-à-dire le corps de la réponse) envoyée par le serveur backend était vide.
Comme la charge utile de la réponse XML est vide, vous recevez le code d'erreur:
steps.extractvariables.ExecutionFailed
Cette erreur peut également se produire si l'élément
<Source>
est défini surrequest
, mais qu'aucune charge utile n'est transmise dans la requête de proxy d'API. Exemple :curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml"
Où
$EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe. Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.La règle Extraire des variables n'exécute l'extraction XML que lorsque l'en-tête
Content-Type
du message estapplication/xml
,text/xml
ouapplication/*+xml
. Vous devez transmettre l'en-tête Content-Type en tant queapplication/xml
,text/xml
ouapplication/*+xml
si vous souhaitez que la règle Extract Variables analyse une charge utile de requête XML.
Solution
Assurez-vous que l'entrée transmise à la stratégie Extraire les variables est valide et non vide.
Pour résoudre le problème avec l'exemple de stratégie Extract Variables présenté ci-dessus, transmettez une charge utile XML valide. Exemple :
Créez un fichier nommé
city.xml
avec le contenu suivant :<city>Bengaluru</city> <area>Sanjaynagar</area>
Effectuez l'appel d'API à l'aide d'une commande cURL comme suit :
curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
Où
$EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe. Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.
Cause : entrée invalide ou incorrecte
Si la stratégie Extraire les variables analyse une entrée non valide ou incorrecte, vous obtenez cette erreur.
Par exemple, cette erreur est renvoyée si le JSON non valide suivant est fourni en tant qu'entrée à la stratégie Extraire les variables.
[
"args": ["name" : "amar" ]
]
Diagnostic
Identifiez la règle Extract Variables où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans la chaînefaultstring
suivante, le nom de la règle estExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"
Examinez l'élément
<Source>
dans la règle XML Extract Variables ayant échoué, puis déterminez le type d'entrée à partir duquel les variables sont extraites. Par exemple, la règle Extract Variables suivante dispose de l'élément<Source>
défini surrequest
et extrait les variables de la charge utile JSON:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> </ExtractVariables>
Vérifiez si l'entrée qui est analysée par la règle Extraire des variables est valide. Si l'entrée est invalide ou incorrecte, il s'agit de la cause de l'erreur.
Dans l'exemple de règle Extract Variables présentée ci-dessus, le JSON non valide suivant a été transmis à la stratégie Extract Variables
[ "args": ["name" : "amar" ] ]
Voici un exemple d'appel d'API qui illustre comment la requête a été transmise :
curl -v "http://<$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
Où
$EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe. Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.La charge utile JSON transmise à l'API n'est pas valide, car elle contient un tableau avec des crochets (
[ ]
) ; vous recevez donc le code d'erreur:steps.extractvariables.ExecutionFailed
Cette erreur peut également se produire si l'élément
<Source>
a été défini surresponse
, mais que la charge utile de la réponse JSON est incorrecte ou non valide.
Solution
Assurez-vous que l'entrée transmise à la stratégie Extraire les variables est valide et n'est pas incorrecte.
Pour résoudre le problème avec l'exemple de règle Extract Variables abordé ci-dessus, transmettez une requête de charge utile JSON valide comme suit:
{
"args":{
"name":"amar"
}
}
UnableToCast
Code d'erreur
steps.extractvariables.UnableToCast
Corps de la réponse d'erreur
{ "fault": { "faultstring": "Unable to cast value [value] as [type].", "detail": { "errorcode": "steps.extractvariables.UnableToCast" } } }
Cause
Cette erreur se produit si la stratégie Extract Variables n'a pas pu convertir la valeur extraite en une variable. Cela se produit généralement si vous tentez de définir la valeur d'un type de données sur une variable d'un autre type de données.
Par exemple, cette erreur s'affiche si la stratégie d'extraction de variable tente de définir une valeur extraite d'une variable de chaîne vers une variable entière.
Diagnostic
Identifiez le type de données de la variable vers lequel la règle Extract Variables tente de caster et échoue. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dansfaultstring
, le type d'objet estBOOLEAN
:"faultstring":"Unable to cast value 36.231 as BOOLEAN."
Identifiez la règle d'extraction de variables dans laquelle vous essayez de définir la valeur sur une variable de type déterminée à l'étape 1.
Par exemple, la règle Extract Variables suivante extrait la valeur d'un JSONPath
$.latitude
à une variable de typeboolean
, qui correspond au contenu de la chaîne d'erreur:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="latitude" type="boolean"> <JSONPath>$.latitude</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">response</Source> </ExtractVariables>
Examinez le type de données de la valeur extraite. Les données peuvent être sous forme d'en-têtes, de chemins d'URI, de charges utiles JSON/XML, de paramètres de formulaire et de paramètres de requête.
Vérifiez si le type de données déterminé à l'étape 3 et le type de données de la variable à laquelle les données sont attribuées (déterminé à l'étape 2) sont identiques.
Si le type de données des variables source et de destination n'est pas le même, cela produit une erreur.
Dans l'exemple de règle d'extraction de variables présenté ci-dessus, considérons la charge utile de la requête JSON comme suit:
{ "latitude":36.2312 }
Le type de données de la valeur extraite de
<JSONPath>
,'$.latitude'
, est un entier, attribué à une variable de donnée de type booléen.Comme le type de données de la valeur extraite et de la variable à laquelle la valeur est attribuée sont différents, vous recevez le code d'erreur :
steps.extractvariables.UnableToCast
.
Solution
Vérifiez que le type de données de la valeur extraite et la variable à laquelle le contenu est attribué sont du même type.
Pour corriger l'exemple de règle d'extraction de variables, vous devez remplacer le type de la variable par "Integer" :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="latitude" type="integer">
<JSONPath>$.latitude</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response</Source>
</ExtractVariables>
JsonPathParsingFailure
Code d'erreur
steps.extractvariables.JsonPathParsingFailure
Corps de la réponse d'erreur
{ "fault": { "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for for flow variables [variable_name]", "detail": { "errorcode": "steps.extractvariables.JsonPathParsingFailure" } } }
Cause
Cette erreur se produit lorsque la stratégie Extract Variables ne parvient pas à analyser un chemin JSON et à extraire les données de la variable de flux spécifiée dans l'élément <Source>
. Cela se produit généralement si la variable de flux spécifiée dans l'élément <Source>
n'existe pas dans le flux actuel.
Par exemple, cette erreur se produit si la stratégie d'extraction de variables s'exécute dans le flux de réponse et s'attend à analyser un chemin JSON, mais l'élément <Source>
spécifie la variable de flux request.content
, qui n'existe pas dans le flux de réponse.
Diagnostic
Identifiez la règle Extract Variables où l'erreur s'est produite et le nom de la variable de flux pour laquelle les données n'ont pas pu être extraites. Vous trouverez ces deux éléments dans l'élément "faultstring" de la réponse d'erreur. Par exemple, dans la chaîne d'erreur suivante, le nom de la stratégie est
ExtractVariables-1
et la variable estrequest.content
:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for for flow variables request.content"
Dans la règle XML d'extraction de variables ayant échoué, vérifiez que le nom de la variable définie dans l'élément
<Source>
correspond au nom de la variable identifiée dans la chaîne d'erreur (étape 1 ci-dessus). Par exemple, la stratégie Extract Variables suivante spécifie une variable nomméerequest.content
qui correspond au contenu de la chaîne d'erreur:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request.content</Source> </ExtractVariables>
Vérifiez si la variable de flux utilisée dans l'élément
<Source>
est définie et disponible dans le flux dans lequel la règle Extraire les variables est exécutée.Si la variable est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée), ou
- impossible à résoudre (non définie),
alors il s'agit de la cause de l'erreur.
Par exemple, supposons que la stratégie ExtractVariables présentée ci-dessus soit censé être exécutée dans le flux de réponse. Rappelez-vous que la variable de flux
request.content
est utilisée dans l'élément<Source>
de la règle Extract Variables. La variable de fluxrequest.content
n'est disponible que dans le flux de requête.Comme la variable
response
n'existe pas dans le flux de requête, vous recevez le code d'erreur :steps.extractvariables.JsonPathParsingFailure
Solution
Vérifiez que la variable de flux utilisée dans l'élément <Source>
de la règle Extraire les variables est disponible dans le flux dans lequel la règle Extraire les variables est exécutée.
Supposons par exemple qu'une variable nommée response.content
existe dans le flux de réponse et qui contient en fait le JSON que vous souhaitez extraire. Pour corriger la règle Extraire les variables présentée ci-dessus, vous pouvez modifier l'élément <Source>
comme suit:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="Name" type="string">
<JSONPath>$.args.name</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response.content</Source>
</ExtractVariables>