Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
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 in <Source>> del criterio Estrai variabili è:
- fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) 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 su 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
faultstring
della risposta all'errore. Ad esempio, nella seguente stringa di errore, il nome del criterio èExtractVariables-1
e la variabile èresponse
:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"
Nel file XML del criterio di estrazione delle variabili con errori, verifica che il nome della variabile nell'elemento corrisponde al nome della variabile identificato nella stringa dell'errore (passaggio 1 sopra). Ad esempio, il seguente criterio Estrai variabili specifica una variabile. denominato
response
nell'elemento, che corrisponde al contenuto della 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 eseguito il criterio Estrazione variabili.Se la variabile è:
- fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
- non può essere risolto (non è definito)
questa è la causa dell'errore.
Ad esempio, supponiamo che il criterio Estrazione variabili mostrato sopra venga eseguito nel flusso di richiesta. Ricorda che la variabile
response
viene utilizzata nell'elemento<Source>
del criterio Estrai variabili. La variabileresponse
è disponibile solo nel flusso di risposta.Poiché la variabile
response
non esiste nel flusso di richiesta, ricevi il codice di errore:steps.extractvariables.SourceMessageNotAvailable
.
Risoluzione
Assicurati che la variabile impostata nell'elemento <Source>
del criterio Estrazione variabili non riuscito sia definita ed esista nel flusso in cui viene eseguito il criterio.
Per correggere il criterio Estrazione variabili di esempio mostrato sopra, puoi modificare l'elemento <Source>
in modo da utilizzare la variabile request
così com'è presente 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 riesce a impostare il valore su una variabile. In genere questo accade se provi ad assegnare valori a più variabili i cui nomi iniziano con le stesse parole in un formato nidificato e separato da punti.
Ad esempio, supponiamo che tu crei/assegni 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 andrà a buon fine perché color
è già allocata e non è consentito allocarle un'altra variabile.
Diagnosi
Identifica il criterio Estrai variabili in cui si è verificato l'errore e il nome della variabile per la quale non è stato possibile impostare il valore. Puoi trovare entrambi gli elementi nell'elemento
faultstring
della risposta di errore. Ad esempio, nella seguente stringa di errore, il nome del criterio èExtractColors
e la variabile èvar.color.next
:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"
Nel file XML del criterio Estrazione variabili non riuscito, verifica che il nome della variabile corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Per Ad esempio, il seguente criterio tenta di assegnare un valore da una query di richiesta a una variabile denominata
var.color.next
(il valore 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 Estrazione 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 norma Estrazione variabili mostrato sopra, tieni presente che:
- Il valore del parametro di query denominato
color
viene assegnato per la prima volta a una variabilevar.color
(Nota:var
è il prefisso per tutte le variabili impostate nell'elemento<VariablePrefix>
) - Nell'assegnazione successiva, il valore del parametro di query
nextcolor
viene 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
. Riceverai 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 il criterio Estrazione variabili mostrato sopra, puoi modificare il nome della variabile var.color.next
in modo da utilizzare 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 ulteriori dettagli, consulta questo post della scheda 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 nella sezione Estrazione variabili
criterio, si verifica questo errore.
Diagnosi
Identifica il criterio di estrazione delle variabili in cui si è verificato l'errore e quelli non validi Percorso JSON. Puoi trovare entrambi gli elementi nell'elemento
faultstring
della . Ad esempio, nella seguente stringa di errore, il nome del criterio èExtractJSONVariables
e il percorso JSON non valido è$.Name
:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."
Nel file XML del criterio di estrazione delle variabili che non è riuscito, verifica che il percorso JSON impostato nel l'elemento
<JSONPath>
corrisponde al percorso identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, il seguente criterio Estrazione variabili specifica il percorso JSON$.Name
, che corrisponde a quello contenuto 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 della richiesta. Se viene impostato suresponse
, si tratta dell'oggetto risposta.Nel criterio Estrazione variabili di esempio mostrato sopra, l'elemento
<Source>
è impostato suresponse
, pertanto le variabili vengono estratte dal payload JSON della risposta.<Source>response</Source>
Esamina il payload JSON appropriato (determinato dal passaggio 3) e convalida se ha l'oggetto specificato nell'elemento
<JSONPath>
. Se il payload JSON non contiene questo oggetto, la causa dell'errore è questa.Ad esempio, supponiamo che tu stia tentando di estrarre le variabili dal seguente payload della risposta JSON:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }
Poiché il payload della risposta JSON non contiene l'oggetto
Name
, il criterio di estrazione delle variabili ha esito negativo e viene visualizzato il codice di errore:steps.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 di estrazione delle 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 input mancante | Il payload di input (JSON, XML) è vuoto. |
Input non valido o non corretto | L'input (JSON, XML e così via) trasmesso al criterio non è valido o è in un formato non corretto. |
Causa: payload di input mancante
Se il criterio Estrazione variabili dovrebbe 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 su request
o response
e dovrebbe contenere un payload JSON o XML, ma il payload è vuoto, si verifica l'errore.
Diagnosi
Identifica il criterio 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 del criterio è
ExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"
Esamina l'elemento
<Source>
nel file XML di estrazione delle variabili con errori e determina il tipo di input da cui vengono estratte le variabili. Ad esempio, il seguente criterio di estrazione delle variabili ha l'elemento<Source>
impostato suresponse
e sta estraendo 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 dal criterio Estrazione variabili è vuoto. Se l'input è vuoto, è la causa dell'errore.
Nell'esempio di criterio 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.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è impostato surequest
, ma non viene passato alcun payload nella richiesta 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 ulteriori informazioni, vedi Personalizzare il routing degli accessiIl criterio Estrai variabili esegue l'estrazione XML solo quando il parametro L'intestazione
Content-Type
èapplication/xml
,text/xml
oapplication/*+xml
. Devi passare l'intestazione Content-Type comeapplication/xml
,text/xml
oapplication/*+xml
se vuoi che la norma Estrazione 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 con il criterio di estrazione delle variabili di esempio mostrato sopra, passa un payload XML valido. Ad esempio:
Crea un file denominato
city.xml
con i seguenti contenuti:<city>Bengaluru</city> <area>Sanjaynagar</area>
Esegui la chiamata all'API utilizzando un comando cURL come segue:
curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
dove
$EXTERNAL_IP
è l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per ulteriori informazioni, consulta Personalizzare il routing dell'accesso.
Causa: input non valido o non corretto
Se il criterio Estrai variabili analizza un input non valido o in un formato non valido, viene visualizzato questo errore.
Ad esempio, se viene fornito il seguente JSON non valido come input al criterio Estrai variabili, viene visualizzato questo errore.
[
"args": ["name" : "amar" ]
]
Diagnosi
Identifica il criterio Estrai variabili in cui si è verificato l'errore. Puoi visualizzare queste informazioni nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"
Esamina l'elemento
<Source>
nel file XML di estrazione delle variabili con errori e determina il tipo di input da cui vengono estratte le variabili. Ad esempio, il seguente criterio Estrai variabili ha l'elemento<Source>
impostato surequest
ed 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>
Verifica che l'input che viene analizzato dal criterio Estrai variabili sia valido. Se l'input non è valido o ha un formato non corretto, è la causa dell'errore.
Nell'esempio del criterio Estrai variabili mostrato sopra, al criterio è stato passato il seguente JSON non valido
[ "args": ["name" : "amar" ] ]
Ecco la chiamata API di esempio che mostra come è stata passata 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 ulteriori informazioni, vedi Personalizzare il routing degli accessiIl payload JSON passato all'API non è valido perché contiene una matrice con parentesi quadre (
[ ]
), quindi ricevi il codice di errore:steps.extractvariables.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è stato impostato suresponse
, ma il payload della risposta JSON non è valido o è in un formato non corretto.
Risoluzione
Assicurati che l'input passato al criterio Estrai variabili sia valido e non in un formato valido.
Per risolvere il problema con il criterio di estrazione delle variabili discusso sopra, passa una richiesta di payload JSON valida come segue:
{
"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 trasmettere i dati estratti a una variabile. In genere, questo accade se si tenta 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 che è stato estratte da una variabile String a una variabile Integer, visualizzerai questo errore.
Diagnosi
Identifica il tipo di dati della variabile a cui si riferisce il criterio Estrai variabili sta tentando di trasmettere e l'operazione non riesce. Puoi trovare queste informazioni nel
faultstring
dell'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 da JSONPath
$.latitude
a una variabile di tipoboolean
, che corrisponde a 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 che viene estratto. I dati potrebbero trovarsi sotto forma di intestazioni, percorsi URI, payload JSON/XML, parametri modulo e parametri di ricerca.
Verifica se il tipo di dati determinato nel passaggio 3 e il tipo di dati della variabile da utilizzare I dati assegnati (determinati nel passaggio 2) sono gli stessi.
Se il tipo di dati delle variabili di origine e di destinazione non è lo stesso, questa è la causa dell'errore.
Nell'esempio di criterio Estrazione variabili mostrato sopra, considera che il payload della richiesta JSON è il seguente:
{ "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 che il valore assegnato non sono uguali, viene visualizzato il codice di errore:
steps.extractvariables.UnableToCast
.
Risoluzione
Assicurati che il tipo di dati del valore estratto e la variabile a cui vengono indirizzati i contenuti assegnate sono dello stesso tipo.
Per correggere il criterio Estrazione variabili di esempio, devi modificare il tipo della variabile in Numero:
<?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 Estrazione variabili non è in grado di analizzare un percorso JSON ed estrarre i dati dalla variabile di flusso specificata nell'elemento <Source>
. In genere, ciò si verifica se la variabile del flusso
specificata nell'elemento <Source>
non esiste nel flusso corrente.
Ad esempio, questo errore si verifica se il criterio Estrazione variabili viene eseguito nel flusso di risposta e si 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 il criterio Estrazione variabili in cui si è verificato l'errore e il nome della variabile del flusso da cui non è stato possibile estrarre i dati. Puoi trovare entrambi questi elementi nell'elemento faultstring della risposta all'errore. Ad esempio, nella seguente stringa di errore, il nome del criterio è
ExtractVariables-1
e la variabile èrequest.content
:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for for flow variables request.content"
Nel file XML del criterio Estrazione variabili non riuscito, 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, le variabili di estrazione riportate di seguito Il criterio specifica una variabile denominatarequest.content
, che corrisponde al contenuto della stringa di errore:<?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 che la variabile di flusso utilizzata nell'elemento
<Source>
sia definita e disponibile nel flusso in cui viene eseguito il criterio Estrai variabili.Se la variabile è:
- fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
- non può essere risolto (non è definito)
allora è la causa dell'errore.
Ad esempio, supponiamo che la norma ExtractVariables mostrata sopra debba essere eseguita nel flusso di risposta. Ricorda che la variabile di flusso
request.content
viene utilizzata nell'elemento<Source>
del criterio Estrai variabili. La variabile di flussorequest.content
è disponibile solo nel flusso di richiesta.Poiché la variabile
response
non esiste nel flusso di richiesta, ricevi il codice di erroresteps.extractvariables.JsonPathParsingFailure
.
Risoluzione
Assicurati che la variabile di flusso utilizzata nell'elemento <Source>
dell'estrazione
Il criterio relativo alle variabili è disponibile nel flusso in cui viene utilizzato il criterio Estrai variabili
.
Ad esempio, supponiamo che nel flusso di risposta esista una variabile denominata response.content
che contenga effettivamente il JSON che vuoi estrarre. Per correggere l'estratto
Norme sulle variabili mostrate sopra. Potresti modificare l'elemento <Source>
in questo 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>