Informazioni importanti sugli errori dei criteri

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Questo argomento descrive la struttura degli errori delle policy e i tipi di variabili di flusso che vengono impostate quando si verifica un errore della policy. Queste informazioni sono essenziali se stai progettando e implementando la gestione dei guasti per i tuoi proxy.

Questo argomento presuppone che tu abbia una conoscenza generale del funzionamento della gestione dei guasti in Edge e che tu sappia cosa sono le regole di errore. Se hai bisogno di una revisione, consulta Gestione degli errori. Le informazioni qui riportate ti aiuteranno anche a navigare e utilizzare il riferimento agli errori delle policy.

Informazioni sulla risposta di errore della policy predefinita

Quando una policy genera un errore, Edge entra immediatamente nel flusso di errore e genera un messaggio di errore. Questo messaggio generato dal sistema è un oggetto JSON che include due informazioni: un codice di errore e una stringa di errore.

Ad esempio:

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

Analizziamo rapidamente questo messaggio di errore:

Il codice di errore è composto da un prefisso e da un nome di errore , come segue: [prefix].[error_name]. Nell'esempio precedente "steps.extractvariables" è il prefisso e SourceMessageNotAvailable è il nome dell'errore. Il prefisso indica il tipo di policy che ha generato l'errore. Nell'esempio precedente puoi notare che una policy Estrai variabili ha generato l'errore e il nome dell'errore è SourceMessageNotAvailable.

La stringa di errore contiene una descrizione dell'errore. La stringa di errore in genere include indizi per aiutarti a trovare il problema specifico che ha causato l'errore, ad esempio il nome della policy, il nome di una variabile non risolta o qualsiasi altro elemento che ha contribuito all'errore. Ad esempio, nel messaggio di errore precedente, "foo" è il nome di una variabile di messaggio non risolta a cui fa riferimento la policy e "ParseJsonResponse" è il nome della policy che ha attivato l'errore.

Variabili specifiche per gli errori delle policy

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

La fault.name variabile

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

Ecco un esempio di regola di errore che verifica il valore di 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>

Ricorda che quando una policy attiva un errore, la fault.name variabile viene sempre impostata sul nome dell'errore.

La [prefix].[policy_name].failed variabile

Oltre a fault.name, un'altra variabile che gli sviluppatori controllano spesso è il flag [prefix].[policy_name].failed, che viene impostato su true o false quando viene eseguita una policy. Nelle regole di errore, dovrai verificare quando è true -- ovvero se si è verificato un errore. Ecco come creare una condizione che controlla il [prefix].[policy_name].failed flag. Per controllare correttamente questa variabile, devi sapere due cose:

  • Il nome della policy che stai controllando. Questo è il valore dell'attributo name della policy, non il nome visualizzato. Questo attributo è sempre incluso nell'XML della definizione della policy.
  • Un prefisso specifico per il tipo di policy che stai controllando. (Spiegheremo come trovare il prefisso di seguito.)

Per illustrare, ecco un altro esempio di regola di errore. Nella condizione esterna, nota come viene formato il nome della variabile [prefix].[policy_name].failed. In questo caso, il prefisso è extractvariables e il nome della policy è ParseJsonResponse. In questo caso, la regola di errore verrà eseguita solo se questa variabile è true. Inoltre, ecco un suggerimento: poiché le regole di errore possono contenere più passaggi, questo pattern è un ottimo modo per organizzare le regole di errore in blocchi.

<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 sulle variabili error e message

La variabile error è disponibile solo nel flusso di errore di un proxy. Puoi ottenere informazioni utili dalla variabile di errore, come il messaggio di errore, il codice di stato , la frase di 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 scopi simili alla variabile error. La variabile message è speciale perché è contestuale. In un flusso di richieste, si comporta come una variabile di richiesta e, in un flusso di risposte, può essere utilizzata per ottenere/impostare i valori delle risposte. Per saperne di più, consulta Casi d'uso per le variabili di messaggio.

Per informazioni su tutte le variabili di Edge, incluse error e message, consulta il riferimento alle variabili.