Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
SourceMessageNotAvailable
Codice di errore
steps.extractvariables.SourceMessageNotAvailable
Corpo della risposta di errore
{
"fault": {
"faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SourceMessageNotAvailable"
}
}
}
Causa
Questo errore si verifica se la variabile message specificata nell'elemento <Source> del criterio Estrai variabili è:
- al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguita la policy) o
- non può essere risolto (non è definito)
Ad esempio, questo errore si verifica se il criterio Estrai variabili viene eseguito nel flusso di richiesta, ma l'elemento <Source> è impostato sulla variabile response o error, che non esiste nel flusso di richiesta.
Diagnosi
Identifica il criterio Estrai variabili in cui si è verificato l'errore e il nome della variabile non disponibile. Puoi trovare entrambi questi elementi nell'elemento
faultstringdella risposta di errore. Ad esempio, nella seguente stringa di errore, il nome della policy èExtractVariables-1e la variabile èresponse:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"Nel file XML della policy Estrai variabili non riuscita, verifica che il nome della variabile impostata nell'elemento corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, la seguente policy Estrai variabili specifica una variabile denominata
responsenell'elemento, che corrisponde a ciò che è presente nella stringa di errore:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>Determina se la variabile utilizzata nell'elemento
<Source>è definita e disponibile nel flusso in cui viene eseguita la norma Estrai variabili.Se la variabile è:
- al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguita la policy) o
- non può essere risolto (non è definito)
allora è questa la causa dell'errore.
Ad esempio, supponiamo che il criterio Estrai variabili mostrato sopra venga eseguito nel flusso request. Ricorda che la variabile
responseviene utilizzata nell'elemento<Source>del criterio Estrai variabili. La variabileresponseè disponibile solo nel flusso di risposta.Poiché la variabile
responsenon esiste nel flusso di richiesta, ricevi il codice di erroresteps.extractvariables.SourceMessageNotAvailable.
Risoluzione
Assicurati che la variabile impostata nell'elemento <Source> del criterio Estrai variabili non riuscito sia definita ed esista nel flusso in cui viene eseguito il criterio.
Per correggere il criterio Estrai variabili di esempio mostrato sopra, puoi modificare l'elemento <Source> in modo che utilizzi la variabile request così come esiste nel flusso di richiesta:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
Codice di errore
steps.extractvariables.SetVariableFailed
Corpo della risposta di errore
{
"fault": {
"faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SetVariableFailed"
}
}
}
Causa
Questo errore si verifica se il criterio Estrai variabili non è riuscito a impostare il valore di una variabile. In genere si verifica se tenti di assegnare valori a più variabili i cui nomi iniziano con le stesse parole in un formato nidificato separato da punti.
Ad esempio, supponiamo di creare/assegnare un valore a una variabile var.color. In questo caso, color viene allocato come nodo oggetto. Se poi provi ad assegnare un valore a un'altra variabile var.color.next, l'operazione non riuscirà perché color è già allocata e non è consentito allocare un'altra variabile.
Diagnosi
Identifica la policy Estrai variabili in cui si è verificato l'errore e il nome della variabile per cui non è stato possibile impostare il valore. Puoi trovare entrambi questi elementi nell'elemento
faultstringdella risposta di errore. Ad esempio, nella seguente stringa di errore, il nome della policy èExtractColorse la variabile èvar.color.next:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"Nel file XML della policy Estrai variabili non riuscita, verifica che il nome della variabile corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, la seguente policy tenta di assegnare un valore da un parametro di query della richiesta a una variabile denominata
var.color.next(il valore che viene visualizzato nella stringa di errore):<?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>Esamina tutti i nomi delle variabili utilizzati nel criterio Estrai variabili non riuscito. Se hai assegnato un valore a un'altra variabile il cui nome inizia con lo stesso nome della variabile identificata nella stringa di errore (passaggio 1 sopra), questa è la causa dell'errore.
Nell'esempio di policy Estrai variabili mostrato sopra, nota che:
- Il valore del parametro di query denominato
colorviene prima assegnato a una variabilevar.color(Nota:varè il prefisso di tutte le variabili impostato nell'elemento<VariablePrefix>) - Nell'assegnazione successiva, il valore del parametro di query
nextcolorviene assegnato a un'altra variabilevar.color.next. - Poiché
var.colorè già allocato, il criterio Estrai variabili non può allocare un'altra variabile nidificatavar.color.next. Pertanto, ricevi il codice di errore:steps.extractvariables.SetVariableFailed
- Il valore del parametro di query denominato
Risoluzione
Assicurati di non avere più nomi di variabili che iniziano con le stesse parole nidificate in formato separato da punti.
Per correggere la policy Estrai variabili mostrata sopra, puoi modificare il
nome della variabile var.color.next in modo che utilizzi il nome della variabile 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>
Ulteriori informazioni
Per maggiori dettagli, consulta questo post della community.
InvalidJSONPath
Codice di errore
steps.extractvariables.InvalidJSONPath
Corpo della risposta di errore
{
"fault": {
"faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
"detail": {
"errorcode": "steps.extractvariables.InvalidJSONPath"
}
}
}
Causa
Questo errore si verifica se viene utilizzato un percorso JSON non valido nell'elemento <JSONPath>
del criterio Estrai variabili. Ad esempio, se un payload JSON non ha l'oggetto Name, ma specifichi Name come percorso nel criterio Estrai variabili, si verifica questo errore.
Diagnosi
Identifica il criterio Estrai variabili in cui si è verificato l'errore e il percorso JSON non valido. Puoi trovare entrambi questi elementi nell'elemento
faultstringdella risposta di errore. Ad esempio, nella seguente stringa di errore, il nome della norma èExtractJSONVariablese il percorso JSON non valido è$.Name:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."Nel file XML della policy Estrai variabili non riuscita, verifica che il percorso JSON impostato nell'elemento
<JSONPath>corrisponda al percorso identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, la seguente norma Estrai variabili specifica il percorso JSON$.Name, che corrisponde a ciò che è presente nella stringa di errore:<?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>Esamina l'elemento
<Source>e determina da quale payload JSON stai tentando di estrarre la variabile. Ad esempio, se l'elemento<Source>è impostato surequest, il criterio estrae il payload JSON dall'oggetto richiesta. Se è impostato suresponse, sarà l'oggetto di risposta.Nell'esempio di policy Estrai variabili mostrato sopra, l'elemento
<Source>è impostato suresponse, quindi le variabili vengono estratte dal payload JSON della risposta.<Source>response</Source>Esamina il payload JSON appropriato (determinato dal passaggio 3) e verifica se contiene l'oggetto specificato nell'elemento
<JSONPath>. Se il payload JSON non contiene questo oggetto, questo è il motivo dell'errore.Ad esempio, supponi di voler estrarre le variabili dal seguente payload di risposta JSON:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }Poiché il payload della risposta JSON non contiene l'oggetto
Name, il criterio Estrai variabili non va a buon fine e ricevi il codice di erroresteps.extractvariables.InvalidJSONPath.
Risoluzione
Assicurati che nell'elemento <JSONPath> del criterio Estrai variabili siano specificati solo gli oggetti che fanno parte del payload JSON da cui vengono estratte le variabili.
Per correggere il criterio Estrai variabili di esempio mostrato sopra, puoi modificare l'elemento <JSONPath> per specificare uno degli oggetti disponibili nel payload della risposta JSON di esempio (ad esempio, gli oggetti firstName e lastName sono validi):
<?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
Codice di errore
steps.extractvariables.ExecutionFailed
Corpo della risposta di errore
{
"fault": {
"faultstring": "Failed to execute the ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.ExecutionFailed"
}
}
}
Cause possibili
Le possibili cause di questo errore sono:
| Causa | Descrizione |
| Payload di input mancante | Il payload di input (JSON, XML) è vuoto. |
| Input non valido o malformato | L'input (JSON, XML e così via) trasmesso al criterio non è valido o ha un formato non corretto. |
Causa: payload di input mancante
Se il criterio Estrai variabili deve estrarre le variabili da un payload JSON o XML, ma i contenuti (payload) della variabile specificata nell'elemento <Source> sono vuoti, si verifica questo errore.
Ad esempio, se l'elemento <Source> nel criterio Estrai variabili è impostato come request o response e deve contenere un payload JSON o XML, ma il payload è vuoto, si verifica l'errore.
Diagnosi
Identifica la norma Estrai variabili in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nella seguente stringa di errore, il nome della policy è
ExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"Esamina l'elemento
<Source>nel file XML Estrai variabili non riuscito e determina il tipo di input da cui vengono estratte le variabili. Ad esempio, la seguente policy Estrai variabili ha l'elemento<Source>impostato suresponseed estrae le variabili dal payload 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>Controlla se l'input analizzato dalla policy Estrai variabili è vuoto. Se l'input è vuoto, questo è il motivo dell'errore.
Nell'esempio di policy Estrai variabili mostrato sopra, il payload della risposta (ovvero il corpo della risposta) inviato dal server di backend era vuoto.
Poiché il payload della risposta XML è vuoto, ricevi il codice di errore:
steps.extractvariables.ExecutionFailedQuesto errore può verificarsi anche se l'elemento
<Source>è impostato surequest, ma non viene passato alcun payload nella richiesta del proxy API. Ad esempio:curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml"dove
$EXTERNAL_IPè l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per saperne di più, consulta Personalizzare il routing dell'accesso.Il criterio Estrai variabili esegue l'estrazione XML solo quando l'intestazione
Content-Typedel messaggio èapplication/xml,text/xmloapplication/*+xml. Devi trasmettere l'intestazione Content-Type comeapplication/xml,text/xmloapplication/*+xmlse vuoi che la norma Estrai variabili analizzi un payload della richiesta XML.
Risoluzione
Assicurati che l'input passato al criterio Estrai variabili sia valido e non vuoto.
Per risolvere il problema relativo alla policy Estrai variabili di esempio mostrata sopra, trasmetti un payload XML valido. Ad esempio:
Crea un file denominato
city.xmlcon il seguente contenuto:<city>Bengaluru</city> <area>Sanjaynagar</area>Effettua la chiamata API utilizzando un comando cURL come segue:
curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xmldove
$EXTERNAL_IPè l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per saperne di più, consulta Personalizzare il routing dell'accesso.
Causa: input non valido o malformato
Se il criterio Estrai variabili analizza un input non valido o con un formato non corretto, viene visualizzato questo errore.
Ad esempio, se il seguente JSON non valido viene fornito come input al criterio Estrai variabili, verrà visualizzato questo errore.
[
"args": ["name" : "amar" ]
]
Diagnosi
Identifica la norma Estrai variabili in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy èExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"Esamina l'elemento
<Source>nel file XML Estrai variabili non riuscito e determina il tipo di input da cui vengono estratte le variabili. Ad esempio, la seguente policy Estrai variabili ha l'elemento<Source>impostato surequested estrae le variabili dal payload 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>Controlla se l'input analizzato dal criterio Estrai variabili è valido. Se l'input non è valido o ha un formato non corretto, questo è il motivo dell'errore.
Nell'esempio di policy Estrai variabili mostrato sopra, il seguente JSON non valido è stato trasmesso alla policy Estrai variabili
[ "args": ["name" : "amar" ] ]Ecco la chiamata API di esempio che mostra come è stata trasmessa la richiesta:
curl -v "http://<$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'dove
$EXTERNAL_IPè l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per saperne di più, consulta Personalizzare il routing dell'accesso.Il payload JSON trasmesso all'API non è valido perché contiene un array con parentesi quadre (
[ ]) , quindi ricevi il codice di errore:steps.extractvariables.ExecutionFailedQuesto errore può verificarsi anche se l'elemento
<Source>è stato impostato suresponse, ma il payload della risposta JSON non è valido o non ha un formato corretto.
Risoluzione
Assicurati che l'input trasmesso al criterio Estrai variabili sia valido e non danneggiato.
Per risolvere il problema con il criterio Estrai variabili di esempio descritto sopra, trasmetti una richiesta di payload JSON valido nel seguente modo:
{
"args":{
"name":"amar"
}
}
UnableToCast
Codice di errore
steps.extractvariables.UnableToCast
Corpo della risposta di errore
{
"fault": {
"faultstring": "Unable to cast value [value] as [type].",
"detail": {
"errorcode": "steps.extractvariables.UnableToCast"
}
}
}
Causa
Questo errore si verifica se il criterio Estrai variabili non è riuscito a eseguire il cast del valore estratto in una variabile. In genere, questo si verifica se tenti di impostare il valore di un tipo di dati su una variabile di un altro tipo di dati.
Ad esempio, se il criterio Estrai variabile tenta di impostare un valore estratto da una variabile stringa in una variabile intera, viene visualizzato questo errore.
Diagnosi
Identifica il tipo di dati della variabile a cui il criterio Estrai variabili tenta di eseguire il cast senza riuscirci. Puoi trovare queste informazioni nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il tipo di oggetto èBOOLEAN:"faultstring":"Unable to cast value 36.231 as BOOLEAN."Identifica il criterio Estrai variabili in cui stai tentando di impostare il valore su una variabile di tipo determinato nel passaggio 1.
Ad esempio, il seguente criterio Estrai variabili estrae il valore da un JSONPath
$.latitudea una variabile di tipoboolean, che corrisponde a ciò che si trova nella stringa di errore:<?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>Esamina il tipo di dati del valore estratto. I dati possono essere sotto forma di intestazioni, percorsi URI, payload JSON/XML, parametri del modulo e parametri di ricerca.
Verifica che il tipo di dati determinato nel passaggio 3 e il tipo di dati della variabile a cui vengono assegnati i dati (determinato nel passaggio 2) siano uguali.
Se il tipo di dati delle variabili di origine e destinazione non è lo stesso, questo è il motivo dell'errore.
Nell'esempio di policy Estrai variabili mostrato sopra, considera il payload della richiesta JSON come segue:
{ "latitude":36.2312 }Il tipo di dati del valore estratto da
<JSONPath>,'$.latitude', è un numero intero, che viene assegnato a una variabile di tipo di dati booleano.Poiché il tipo di dati del valore estratto e il tipo di dati della variabile a cui viene assegnato il valore non sono gli stessi, ricevi il codice di errore:
steps.extractvariables.UnableToCast.
Risoluzione
Assicurati che il tipo di dati del valore estratto e della variabile a cui viene assegnato il contenuto siano dello stesso tipo.
Per correggere la policy di esempio Estrai variabili, devi modificare il tipo di variabile in 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
Codice di errore
steps.extractvariables.JsonPathParsingFailure
Corpo della risposta di errore
{
"fault": {
"faultstring": "ExtractVariables [policy_name]: Json path parsing failed for for flow variables [variable_name]",
"detail": {
"errorcode": "steps.extractvariables.JsonPathParsingFailure"
}
}
}
Causa
Questo errore si verifica quando il criterio Estrai variabili
non è in grado di analizzare un percorso JSON ed estrarre i dati dalla variabile di flusso
specificata nell'elemento <Source>. In genere questo accade se la variabile di flusso
specificata nell'elemento <Source> non esiste nel flusso corrente.
Ad esempio, questo errore si verifica se il criterio Estrai variabili viene eseguito nel flusso di risposta e prevede di analizzare un percorso JSON, ma l'elemento <Source> specifica la variabile di flusso request.content, che non esiste nel flusso di risposta.
Diagnosi
Identifica la policy Estrai variabili in cui si è verificato l'errore e il nome della variabile di flusso a cui non è stato possibile estrarre i dati. Puoi trovare entrambi gli elementi nell'elemento faultstring della risposta all'errore. Ad esempio, nella seguente stringa di errore, il nome della policy è
ExtractVariables-1e la variabile èrequest.content:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for for flow variables request.content"Nel file XML della policy Estrai variabili non riuscita, verifica che il nome della variabile impostata nell'elemento
<Source>corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, la seguente policy Estrai variabili specifica una variabile denominatarequest.content, che corrisponde a quella presente in faultstring:<?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>Verifica se la variabile di flusso utilizzata nell'elemento
<Source>è definita e disponibile nel flusso in cui viene eseguita la policy Estrai variabili.Se la variabile è:
- al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguita la policy) o
- non può essere risolto (non è definito)
allora è questa la causa dell'errore.
Ad esempio, supponiamo che la policy ExtractVariables mostrata sopra debba essere eseguita nel flusso di risposta. Ricorda che la variabile di flusso
request.contentviene utilizzata nell'elemento<Source>del criterio Estrai variabili. La variabile di flussorequest.contentè disponibile solo nel flusso di richiesta.Poiché la variabile
responsenon esiste nel flusso di richiesta, ricevi il codice di erroresteps.extractvariables.JsonPathParsingFailure.
Risoluzione
Assicurati che la variabile di flusso utilizzata nell'elemento <Source> del criterio Estrai variabili sia disponibile nel flusso in cui viene eseguito il criterio Estrai variabili.
Ad esempio, supponi che nel flusso di risposta esista una variabile denominata response.content e che contenga il JSON che vuoi estrarre. Per correggere la norma Estrai
variabili mostrata sopra, puoi modificare l'elemento <Source> nel seguente modo:
<?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>