Informazioni importanti sugli errori relativi alle norme

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Questo argomento descrive la struttura degli errori dei criteri e i tipi di variabili di flusso che vengono viene impostata quando si verifica un errore del criterio. Queste informazioni sono essenziali se stai progettando per implementare la gestione degli errori per i proxy.

Questo argomento presuppone che tu abbia una conoscenza generale di come funziona la gestione degli errori in Edge e che sai cosa sono le regole di errore. Se devi eseguire una revisione, consulta la sezione Gestione degli errori. Le informazioni fornite qui per consultare e utilizzare la documentazione di riferimento sugli errori di criteri.

Informazioni sulla risposta di errore del criterio predefinito

Quando un criterio genera un errore, Edge entra immediatamente nel flusso di errore e genera un errore. . Questo messaggio generato dal sistema è un oggetto JSON che include due bit di informazioni: errorcode e un faultstring.

Ad esempio:

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse"
   }
}

Scomponiamo rapidamente questo messaggio di errore:

Il errorcode è costituito da un prefisso e da un errore nome, come segue: [prefix].[error_name]. Nell'esempio precedente "steps.extractvariables" è il prefisso e SourceMessageNotAvailable è il nome dell'errore. Il prefisso indica il tipo di criterio che ha generato l'errore. Nella sezione precedente Ad esempio, puoi capire che un criterio di estrazione delle variabili ha generato l'errore e che il nome dell'errore è SourceMessageNotAvailable.

Il campo faultstring contiene una descrizione dell'errore. La stringa di errore in genere include indizi per aiutarti a individuare il problema specifico che ha causato l'errore, ad esempio il nome della norma, il nome di una variabile non risolta o ciò che ha contribuito all'errore. Per esempio, nel messaggio di errore precedente, "foo" è il nome di un problema variabile di messaggio a cui viene fatto riferimento nel criterio e "ParseJsonResponse" è il nome del che ha attivato l'errore.

Variabili specifiche degli errori dei criteri

Quando viene attivato un errore relativo al criterio, vengono compilate alcune variabili di flusso specifiche dell'errore. Questi sono estremamente utili nella gestione degli errori. Come spiegato nell'argomento Gestione degli errori, è pratica comune intercettare gli errori dei criteri generati dal sistema ed eseguire un'azione successiva, ad esempio creare un una risposta di errore personalizzata. Ad esempio, per motivi di sicurezza, potresti voler impedire ai client di visualizzando gli errori effettivi e i codici di stato restituiti da Edge.

La fault.name variabile

Quando un criterio genera un errore, imposta la variabile di flusso fault.name su error_name parte del codice di errore (come descritto nella sezione precedente). È molto è comune per valutare questa variabile ed eseguire regole di errore in modo condizionale.

Di seguito è riportato un esempio di regola di errore che verifica il valore fault.name:

<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
</FaultRule>

Tieni presente che quando un criterio attiva un errore, fault.name è sempre impostata sul nome dell'errore.

La Variabile [prefix].[policy_name].failed

Oltre a fault.name, un'altra variabile controllata comunemente dagli sviluppatori è la [prefix].[policy_name].failed, che viene impostato su true o false quando un viene eseguito. Nelle regole di errore, vorrai verificare se è vero. cioè per verificare se si è verificato un errore. Di seguito viene spiegato come creare un condizionale che controlli [prefix].[policy_name].failed flag. Per controllare correttamente questa variabile, è necessario due cose:

  • Il nome del criterio che stai controllando. Questo è il valore del parametro , non il nome visualizzato. Questo attributo è sempre incluso nel criterio del file XML di definizione.
  • Un prefisso specifico per il tipo di norme che stai controllando. (Lo faremo spiega come trovare il prefisso di seguito.)

Per spiegarci meglio, ecco un altro esempio di regola di errore. Nota nella condizione esterna come Viene formato il nome della variabile [prefix].[policy_name].failed. In questo caso il prefisso è extractvariables e il nome del criterio è ParseJsonResponse. In questo in questo caso, la regola di errore viene eseguita solo se questa variabile è true. Ed ecco un suggerimento: dato che errori possono contenere più passaggi, questo pattern è un buon modo per organizzare le regole di errore isolati.

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition>
</FaultRule>

Informazioni su Variabili error e message

La variabile error è disponibile solo nel flusso di errori di un proxy. Puoi ottenere informazioni utili dalla variabile di errore, ad esempio messaggio di errore, stato codice, frase del motivo e così via. Il pattern di formattazione per la variabile di errore è:

error.[error_component] = [value]

Ad esempio:

error.message = "request message is not available for ExtractVariable: ParseJsonResponse"

e

error.status.code = "500"

La variabile message è disponibile anche nel flusso di errore e può essere utilizzata per con scopi simili a quelli della variabile error. La variabile del messaggio è speciale perché sono contestuali. In un flusso di richiesta si comporta come una variabile di richiesta e in un flusso di risposta può essere utilizzato per ottenere/impostare i valori di risposta. Per ulteriori informazioni, consulta Utilizzare per le variabili dei messaggi.

Consulta Riferimento per le variabili per informazioni su tutte le variabili Edge, tra cui error e message.