Informazioni importanti sugli errori relativi alle norme

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

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

Questo argomento presuppone che tu abbia una conoscenza generale di come funziona la gestione dei guasti in Edge e che tu sappia quali sono le regole di errore. Se hai bisogno di una revisione, vedi Gestire gli errori. Le informazioni qui riportate ti aiuteranno anche a navigare e a utilizzare il riferimento sugli errori relativi alle norme.

Informazioni sulla risposta di errore del criterio predefinito

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

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 è costituito da un prefisso e un nome 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 criterio che ha generato l'errore. Nell'esempio precedente, è indicato che l'errore è stato generato da un criterio Estrai variabili e che il nome dell'errore è SourceMessageNotAvailable.

La faultstring 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 del criterio, il nome di una variabile non risolta o qualsiasi altra cosa abbia contribuito all'errore. Ad esempio, nel messaggio di errore precedente, "foo" è il nome di una variabile del messaggio non risolta a cui viene fatto riferimento nel criterio, mentre "ParseJsonResponse" è il nome del criterio che ha attivato l'errore.

Variabili specifiche per gli errori dei criteri

Quando viene attivato un errore del criterio, vengono compilate alcune variabili di flusso specifiche per l'errore. Queste variabili sono estremamente utili per la gestione degli errori. Come spiegato nell'argomento Gestione degli errori, è prassi comune eseguire il trap degli errori dei criteri 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 vedere gli errori e i codici di stato effettivi restituiti da Edge.

La variabile fault.name

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

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 un criterio attiva un errore, la variabile fault.name viene sempre impostata sul nome dell'errore.

La variabile [prefix].[policy_name].failed

Oltre a fault.name, un'altra variabile che gli sviluppatori controllano comunemente è il flag [prefix].[policy_name].failed, che viene impostato su true o false quando viene eseguito un criterio. Nelle regole di errore è consigliabile verificare quando è true, ovvero per verificare se si è verificato un errore. Ecco come creare una condizione condizionale che controlli il flag [prefix].[policy_name].failed. Per controllare correttamente questa variabile, devi conoscere due cose:

  • Il nome del criterio che stai controllando. Si tratta del valore dell'attributo nome del criterio, non del nome visualizzato. Questo attributo è sempre incluso nel codice XML della definizione del criterio.
  • Un prefisso specifico per il tipo di criterio che stai controllando. Di seguito spiegheremo come trovare il prefisso.

Per spiegarci meglio, ecco un'altra regola di errore di esempio. Nella condizione esterna, vedrai 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 caso, la regola di errore verrà eseguita solo se questa variabile è true. 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 errori 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 modello 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 errori e può essere utilizzata per scopi simili alla variabile error. La variabile del messaggio è speciale perché è contestuale. In un flusso di richiesta, si comporta come una variabile di richiesta e può essere utilizzata per ottenere/impostare valori di risposta. Per saperne di più, consulta Casi d'uso per le variabili dei messaggi.

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