Risoluzione degli errori di runtime delle variabili

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

SourceMessageNotAvailable

Codice di errore

steps.extractvariables.SourceMessageNotAvailable

Corpo della risposta all'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 è:

  • fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) oppure
  • 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.

Diagnostica

  1. Identifica il criterio Estrai variabili in cui si è verificato l'errore e il nome della variabile che non è disponibile. Puoi trovare entrambi gli elementi nell'elemento faultstring della risposta di 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"

  2. Nel file XML del criterio Estrai variabili che non è stato superato, verifica che il nome della variabile impostata nell'elemento corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio Estrai variabili specifica una variabile denominata 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>
    
  3. Determina se la variabile utilizzata nell'elemento <Source> è definita e disponibile nel flusso in cui è in esecuzione il criterio Estrai variabili.

  4. Se la variabile è:

    • fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) oppure
    • non può essere risolto (non è definito)

    è questa la causa dell'errore.

    Supponiamo, ad esempio, che il criterio Estrai variabili mostrato sopra venga eseguito nel flusso request. Ricorda che la variabile response viene utilizzata nell'elemento <Source> del criterio Estrai variabili. La variabile response è disponibile solo nel flusso di risposta.

    Poiché la variabile response non esiste nel flusso di richiesta, riceverai il codice di errore: steps.extractvariables.SourceMessageNotAvailable.

Risoluzione

Assicurati che la variabile impostata nell'elemento <Source> del criterio Estrai variabili non riuscito sia definita e esista nel flusso in cui viene eseguito il criterio.

Per correggere il criterio di esempio per l'estrazione di variabili mostrato sopra, puoi modificare l'elemento <Source> in modo da utilizzare la variabile request esistente 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 all'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 su una variabile. In genere si verifica se si cerca di 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 crei/assegni un valore a una variabile var.color. In questo caso, color viene allocato come nodo oggetto. L'assegnazione di un valore a un'altra variabile var.color.next non andrà a buon fine perché la variabile color è già stata allocata e non è possibile assegnarle un'altra variabile.

Diagnostica

  1. Identifica il criterio Estrai variabili in cui si è verificato l'errore e il nome della variabile per cui 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"

  2. Nel file XML del criterio Estrai variabili che non è stato superato, verifica che il nome della variabile corrisponda a quello identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio tenta di assegnare un valore da un parametro di query di richiesta a una variabile denominata var.color.next (il valore che compare 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>
    
  3. Esamina tutti i nomi delle variabili utilizzati nel criterio Estrai variabili che non è stato superato. Se hai assegnato un valore a un'altra variabile il cui nome inizia con lo stesso nome della variabile identificato nella stringa di errore (passaggio 1 sopra), allora questa è la causa dell'errore.

    Nell'esempio di criterio Estrai variabili mostrato sopra, tieni presente che:

    • Il valore del parametro di ricerca denominato color viene assegnato per la prima volta a una variabile var.color . Nota: var è il prefisso per tutte le variabili impostate nell'elemento <VariablePrefix>.
    • Nella prossima assegnazione, il valore del parametro di ricerca nextcolor viene assegnato a un'altra variabile var.color.next.
    • Poiché la variabile var.color è già allocata, il criterio Estrai variabili non può assegnare un'altra variabile nidificata var.color.next. Riceverai quindi il codice di errore: steps.extractvariables.SetVariableFailed

Risoluzione

  1. Assicurati di non avere più nomi di variabili i cui nomi iniziano con le stesse parole nidificate in formato separato da punti.

    Per correggere il criterio Estrai 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 all'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.

Diagnostica

  1. Identifica il criterio Estrai variabili in cui si è verificato l'errore e il percorso JSON non valido. Puoi trovare entrambi questi elementi nell'elemento faultstring della risposta di errore. 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."

  2. Nel file XML del criterio Estrai variabili non riuscito, verifica che il percorso JSON impostato nell'elemento <JSONPath> corrisponda al percorso identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio Estrai variabili specifica il percorso JSON $.Name, che corrisponde al contenuto della 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>
    
  3. Esamina l'elemento <Source> e determina da quale payload JSON stai tentando di estrarre la variabile. Ad esempio, se l'elemento <Source> è impostato su request, il criterio estrae il payload JSON dall'oggetto della richiesta. Se è impostato su response, sarà l'oggetto risposta.

    Nell'esempio di criterio Estrai variabili mostrato sopra, l'elemento <Source> è impostato su response, quindi le variabili vengono estratte dal payload JSON della risposta.

    <Source>response</Source>

  4. Esamina il payload JSON appropriato (determinato nel passaggio 3) e verifica se contiene l'oggetto specificato nell'elemento <JSONPath>. Se il payload JSON non contiene quell'oggetto, è questa la causa dell'errore.

    Ad esempio, supponiamo che tu stia tentando di estrarre variabili dal seguente payload di risposta JSON:

    {
      "firstName":"John",
      "lastName":"Doe",
      "city":"San Jose",
      "state":"CA"
    }
    

    Poiché il payload della risposta JSON non ha l'oggetto Name, il criterio Estrai variabili non riesce e restituisce l'errore: steps.extractvariables.InvalidJSONPath.

Risoluzione

  1. Assicurati che solo gli oggetti che fanno parte del payload JSON da cui vengono estratte le variabili vengano specificati nell'elemento <JSONPath> del criterio Estrai variabili.

    Per correggere il criterio di esempio Estrai variabili mostrato sopra, puoi modificare l'elemento <JSONPath> per specificare uno degli oggetti disponibili nel payload di 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 all'errore

{
    "fault": {
        "faultstring": "Failed to execute the ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.ExecutionFailed"
        }
    }
}

Possibili cause

Le possibili cause di questo errore sono:

Causa Descrizione
Payload di input mancante Il payload di input (JSON, XML) è vuoto.
Input non valido o in formato non valido L'input (JSON, XML e così via) passato al criterio non è valido o non è valido.

Causa: payload di input mancante

Se il criterio Estrai variabili deve estrarre le variabili da un payload JSON o XML, ma il contenuto (payload) della variabile specificata nell'elemento <Source> è vuoto, si verifica questo errore.

Ad esempio, se l'elemento <Source> nel criterio Estrai variabili è impostato su request o response e quest'ultimo dovrebbe contenere o payload JSON o XML, ma il payload è vuoto, si verifica l'errore.

Diagnostica

  1. 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"

  2. Esamina l'elemento <Source> nel file XML di tipo Estrai variabili e determina il tipo di input da cui vengono estratte le variabili. Ad esempio, il seguente criterio Estrai variabili ha l'elemento <Source> impostato su response ed 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>
    
    
  3. Verifica se l'input che viene analizzato dal criterio di estrazione delle variabili è vuoto. Se l'input è vuoto, è questa 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, riceverai il codice di errore:

    steps.extractvariables.ExecutionFailed

    Questo errore può verificarsi anche se l'elemento <Source> è impostato su request, ma non viene trasmesso alcun payload nella richiesta proxy API. Ad esempio:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
    

    Il criterio Estrai variabili esegue l'estrazione XML solo quando l'intestazione Content-Type del messaggio è application/xml, text/xml o application/*+xml. Devi passare l'intestazione Content-Type come application/xml, text/xml o application/*+xml se vuoi che il criterio Estrai variabili analizzi un payload XML.

Risoluzione

Assicurati che l'input passato al criterio Estrai variabili sia valido e che non sia vuoto.

Per risolvere il problema con il criterio di esempio Estrai variabili mostrato sopra, trasmetti un payload XML valido. Ad esempio:

  1. Crea un file denominato city.xml con il seguente contenuto:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. Effettua la chiamata API utilizzando un comando cURL come segue:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
    
    

Causa: input non valido o non valido

Se il criterio per l'estrazione delle variabili analizza un input non valido o in un formato non corretto, viene visualizzato questo errore.

Ad esempio, se viene fornito il seguente JSON non valido come input del criterio Estrai variabili, riceverai questo errore.

[
    "args": ["name" : "amar" ]
]

Diagnostica

  1. Identifica il criterio Estrai variabili in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente faultstring, il nome del criterio è ExtractJSONVariables:

    "faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"

  2. Esamina l'elemento <Source> nel file XML di tipo Estrai variabili e determina il tipo di input da cui vengono estratte le variabili. Ad esempio, il seguente criterio Estrai variabili ha l'elemento <Source> impostato su request 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>
    
    
  3. Verifica se l'input che viene analizzato dal criterio di estrazione delle variabili è valido. Se l'input non è valido o è in un formato non corretto, è questa la causa dell'errore.

    Nell'esempio di criterio Estrai variabili mostrato sopra, il seguente JSON non valido è stato trasmesso al criterio Estrai variabili

    [
        "args": ["name" : "amar" ]
    ]
    

    Ecco la chiamata API di esempio che mostra come è stata trasmessa la richiesta:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
    

    Il payload JSON passato all'API non è valido poiché contiene un array con parentesi quadre ([ ]) , pertanto riceverai il codice di errore:

    steps.extractvariables.ExecutionFailed
    

    Questo errore può verificarsi anche se l'elemento <Source> è stato impostato su response, ma il payload della risposta JSON non è valido o è in un formato non corretto.

Risoluzione

Assicurati che l'input passato al criterio per l'estrazione delle variabili sia valido e che non abbia un formato valido.

Per risolvere il problema con l'esempio del criterio di estrazione delle variabili discusso sopra, trasmetti una richiesta di payload JSON valida come segue:

{
   "args":{
      "name":"amar"
   }
}

UnableToCast

Codice di errore

steps.extractvariables.UnableToCast

Corpo della risposta all'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 il valore estratto a una variabile. In genere questo accade 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 String in una variabile Integer, verrà visualizzato questo errore.

Diagnostica

  1. Identificare il tipo di dati della variabile in cui il criterio di estrazione delle variabili sta tentando di trasmettere e ha esito negativo. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente faultstring, il tipo di oggetto è BOOLEAN:

    "faultstring":"Unable to cast value 36.231 as BOOLEAN."

  2. 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 valore JSONPath $.latitude a una variabile di tipo boolean, che corrisponde ai contenuti della 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>
    
    
  3. Esamina il tipo di dati del valore che viene estratto. I dati possono essere sotto forma di intestazioni, percorsi URI, payload JSON/XML, parametri di modulo e parametri di query.

  4. Verifica se il tipo di dati determinato nel passaggio 3 e il tipo di dati della variabile a cui vengono assegnati i dati (determinati nel passaggio 2) sono uguali.

  5. Se il tipo di dati delle variabili di origine e di destinazione non è lo stesso, è questa la causa dell'errore.

    Nell'esempio di criterio Estrai 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 booleano.

    Poiché il tipo di dati del valore estratto e il tipo di dati della variabile a cui viene assegnato il valore non corrispondono, riceverai il codice di errore: steps.extractvariables.UnableToCast.

Risoluzione

Assicurati che il tipo di dati del valore estratto e la variabile a cui vengono assegnati i contenuti siano dello stesso tipo.

Per correggere il criterio di esempio Estrai variabili, devi modificare il tipo della variabile in numero intero:

<?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 all'errore

{
    "fault": {
        "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]",
        "detail": {
            "errorcode": "steps.extractvariables.JsonPathParsingFailure"
        }
    }
}

Causa

Questo errore si verifica quando il criterio Estrai variabili non riesce ad 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 attuale.

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.

Diagnostica

  1. Identifica il criterio di estrazione delle variabili in cui si è verificato l'errore e il nome della variabile di flusso in cui non è stato possibile estrarre i dati. Puoi trovare entrambi gli elementi nell'elemento stringa di errore della risposta di 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 flow variables request.content"

  2. Nel file XML del criterio Estrai variabili che non è stato superato, verifica che il nome della variabile impostata nell'elemento <Source> corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio Estrai variabili specifica una variabile denominata request.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>
    
    
  3. Verifica che la variabile di flusso utilizzata nell'elemento <Source> sia definita e disponibile nel flusso in cui è in esecuzione il criterio Estrai variabili.

  4. Se la variabile è:

    • fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) oppure
    • non può essere risolto (non è definito)

    è questa la causa dell'errore.

    Supponiamo, ad esempio, 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 flusso request.content è disponibile solo nel flusso di richiesta.

    Poiché la variabile response non esiste nel flusso di richiesta, riceverai il codice di errore: steps.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, supponiamo che nel flusso di risposta esista una variabile denominata response.content che contenga il codice JSON che vuoi estrarre. Per correggere il criterio Estrai variabili mostrato 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>