Cosa
Il criterio HTTPModifier può modificare una richiesta o un messaggio di risposta esistente.
Il criterio consente di eseguire le seguenti azioni sui messaggi:
- Aggiungere nuovi parametri di modulo, intestazioni o parametri di ricerca a un messaggio.
- Rimuovere intestazioni, parametri di ricerca e parametri del modulo da un messaggio
- Impostare il valore delle proprietà esistenti in un messaggio
Con HTTPModifier, puoi aggiungere, modificare o rimuovere le proprietà della richiesta o della risposta. In alternativa, puoi utilizzare HTTPModifier per creare un messaggio di richiesta o risposta personalizzato e passarlo a una destinazione alternativa, come descritto in Creare messaggi di richiesta personalizzati.
Il criterio HTTPModifier può creare variabili di flusso con i seguenti elementi secondari:
L'ordine in cui organizzare gli elementi <Add>
, <Set>
e <Remove>
è importante. Il criterio esegue queste azioni nell'ordine in cui vengono visualizzate nella relativa configurazione. Se devi rimuovere tutte le intestazioni, quindi impostare un'intestazione specifica, devi includere l'elemento <Remove>
prima dell'elemento <Set>
.
Questo è un criterio standard e può essere implementato in qualsiasi tipo di ambiente. Non tutti gli utenti devono conoscere i tipi di criteri e di ambiente. Per informazioni sui tipi di criteri e sulla disponibilità con ogni tipo di ambiente, consulta Tipi di criteri.
<HTTPModifier>
elemento
Definisce un criterio HTTPModifier.
Valore predefinito | Consulta la scheda Criterio predefinito di seguito |
Obbligatorio? | Obbligatorio |
Tipo | Oggetto complesso |
Elemento principale | N/A |
Elementi secondari |
<Add> <AssignTo> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
L'elemento <HTTPModifier>
utilizza la seguente sintassi:
Sintassi
L'elemento <HTTPModifier>
utilizza la seguente sintassi:
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- All HTTPModifier child elements are optional --> <Add> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <Path>PATH</Path> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Criterio predefinito
L'esempio seguente mostra le impostazioni predefinite quando aggiungi un criterio HTTPModifier al flusso nell'interfaccia utente di Apigee:
<HTTPModifier continueOnError="false" enabled="true" name="http-modifier-default"> <DisplayName>HTTP Modifier-1</DisplayName> <Properties/> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </HTTPModifier>
Quando inserisci un nuovo criterio HTTPModifier nell'interfaccia utente di Apigee, il modello contiene stub per tutte le possibili operazioni. In genere, devi selezionare le operazioni che vuoi eseguire con questo criterio e rimuovere il resto degli elementi secondari. Ad esempio, se vuoi eseguire un'operazione di aggiunta, usa l'elemento <Add>
e rimuovi <Remove>
e altri elementi secondari dal criterio per renderlo più leggibile.
Questo elemento ha i seguenti attributi comuni a tutti i criteri:
Attributo | Predefinito | Obbligatorio? | Descrizione |
---|---|---|---|
name |
N/A | Obbligatorio |
Il nome interno del criterio. Il valore dell'attributo Facoltativamente, utilizza l'elemento |
continueOnError |
falso | Facoltativo | Imposta su false per restituire un errore in caso di errore del criterio. Questo è un comportamento previsto per
la maggior parte dei criteri. Imposta su true per continuare l'esecuzione del flusso anche dopo un errore nel criterio. Vedi anche:
|
enabled |
true | Facoltativo | Imposta su true per applicare il criterio. Imposta su false per disattivare il
criterio. Il criterio non verrà applicato anche se rimane collegato a un flusso. |
async |
falso | Deprecato | Questo attributo è stato ritirato. |
La tabella seguente fornisce una descrizione generale degli elementi secondari di <HTTPModifier>
:
Elemento secondario | Obbligatorio? | Descrizione |
---|---|---|
Operazioni comuni | ||
<Add> |
Facoltativo | Aggiunge informazioni all'oggetto del messaggio specificato dall'elemento
<AssignTo> .
Per sovrascrivere intestazioni o parametri esistenti, utilizza l'elemento |
<Remove> |
Facoltativo | Elimina gli elementi specificati dalla variabile messaggio specificata nell'elemento <AssignTo> . |
<Set> |
Facoltativo | Sostituisce i valori delle proprietà esistenti nella richiesta o nella risposta, specificata dall'elemento <AssignTo> .
|
Altri elementi secondari | ||
<AssignTo> |
Facoltativo | Specifica su quale messaggio funziona il criterio HTTPModifier. Può essere una richiesta o una risposta standard o un nuovo messaggio personalizzato. |
<IgnoreUnresolvedVariables> |
Facoltativo | Determina se l'elaborazione si interrompe quando viene rilevata una variabile non risolta. |
Ciascuno di questi elementi secondari è descritto nelle sezioni seguenti.
Esempi
I seguenti esempi mostrano alcuni modi in cui puoi utilizzare il criterio HTTPModifier:
1: aggiungi intestazione
L'esempio seguente aggiunge un'intestazione alla richiesta con l'elemento <Add>
. La variabile VerificationAPIKey in questo esempio viene generata dal criterio VerificationAPIKey:
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
2: modifica la risposta
L'esempio seguente modifica un oggetto risposta esistente aggiungendo un'intestazione:
<HTTPModifier name="HM-modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </HTTPModifier>
In questo esempio non viene creato un nuovo messaggio. Modifica un messaggio di risposta esistente aggiungendo un'intestazione HTTP.
Poiché in questo esempio viene specificato response
come nome della variabile nell'elemento
<AssignTo>
, questo criterio modifica l'oggetto di risposta originariamente impostato con i dati restituiti dal server di destinazione.
L'intestazione HTTP aggiunta al messaggio di risposta da questo criterio deriva da una variabile compilata dal criterio LookupCache. Pertanto, il messaggio di risposta modificato da questo criterio HTTPModifier contiene un'intestazione HTTP che indica se i risultati sono stati estratti o meno dalla cache. L'impostazione delle intestazioni nella risposta può essere utile per il debug e la risoluzione dei problemi.
3. Rimuovi parametro di query
Nell'esempio seguente il parametro di query apikey
viene rimosso dalla richiesta:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Una best practice consiste nel rimuovere il parametro di query apikey
dal messaggio di richiesta quando utilizzi il criterio VerificationAPIKey per l'autenticazione utente. in modo da impedire che informazioni chiave sensibili vengano trasmesse alla destinazione del backend.
Riferimento elemento secondario
In questa sezione vengono descritti gli elementi secondari di <HTTPModifier>
.
<Add>
Aggiunge informazioni alla richiesta o alla risposta, che vengono specificate dall'elemento <AssignTo>
.
L'elemento <Add>
aggiunge nuove proprietà nel messaggio che non esistono nel messaggio originale. Tieni presente che anche <Set>
fornisce questa funzionalità. Per modificare i valori delle proprietà esistenti, utilizza l'elemento <Set>
.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<HTTPModifier>
|
Elementi secondari |
<FormParams> <Headers> <QueryParams> |
L'elemento <Add>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> </HTTPModifier>
Esempio 1
L'esempio seguente utilizza l'elemento <FormParams>
per ottenere i valori dei tre parametri della stringa di query dalla richiesta iniziale e impostarli come parametri di modulo nella richiesta dell'endpoint di destinazione:
<HTTPModifier name="HM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
L'esempio seguente utilizza l'elemento <Headers>
per aggiungere un'intestazione partner-id
alla richiesta che verrà inviata all'endpoint di destinazione:
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 3
L'esempio seguente utilizza l'elemento <QueryParams>
per aggiungere alla richiesta un singolo parametro
di query con un valore statico:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Questo esempio utilizza <Add>
nel pre-flusso della richiesta. Se esamini i risultati in uno strumento come lo strumento di debug, la richiesta a https://example-target.com/get
diventa https://example-target.com/get?myParam=42
.
Gli elementi secondari di <Add>
supportano la sostituzione dinamica delle stringhe, nota come modelli di messaggi.
<FormParams>
(secondario di <Add>
)
Aggiunge nuovi parametri del modulo al messaggio di richiesta. Questo elemento non ha effetto su un messaggio di risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <FormParam> |
Elemento principale |
<Add>
|
Elementi secondari |
<FormParam> |
L'elemento <FormParams>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> </Add> </HTTPModifier>
Esempio 1
L'esempio seguente aggiunge un singolo parametro di modulo (answer
) e un valore statico (42
) alla richiesta:
<HTTPModifier name="HM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
L'esempio seguente recupera il valore del parametro di query name
e
lo aggiunge alla richiesta come parametro del modulo, poi lo rimuove:
<HTTPModifier name="HM-Swap-QueryParam-to-FormParams"> <Add> <FormParam name="name">{request.queryparam.name} </Add> <Remove> <QueryParam name="name"/> </Remove> </HTTPModifier>
Tieni presente che questo esempio non specifica un target con <AssignTo>
. Questo criterio aggiunge il parametro solo alla richiesta.
Esempio 3
Nell'esempio seguente vengono aggiunti più parametri del modulo alla richiesta:
<HTTPModifier name="HM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Questo esempio recupera i parametri della stringa di query dalla richiesta di origine e li aggiunge come parametri del modulo con nomi diversi. quindi rimuove i parametri di ricerca originali. Apigee invierà la richiesta modificata all'endpoint di destinazione.
Puoi utilizzare lo strumento di debug per esaminare il flusso. Vedrai che il corpo della richiesta contiene i dati del modulo con codifica URL, che sono stati originariamente trasmessi come parametri della stringa di query:
username=nick&zip_code=90210&default_language=en
Puoi utilizzare <FormParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbi HTTP:
GET
,POST
- Tipo di messaggio: richiesta
- Uno (o entrambi) dei seguenti elementi:
- Dati del modulo: imposta su un valore o
""
(la stringa vuota). Ad esempio, concurl
, aggiungi-d ""
alla richiesta. - Intestazione
Content-Length
: impostata su 0 (se non sono presenti dati nella richiesta originale; altrimenti, la lunghezza attuale, in byte). Ad esempio, concurl
aggiungi-H "Content-Length: 0"
alla richiesta.
- Dati del modulo: imposta su un valore o
Ad esempio:
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
Quando aggiungi <FormParams>
, Apigee imposta l'intestazione Content-Type
della richiesta su application/x-www-form-urlencoded
prima di inviare il messaggio al servizio di destinazione.
<Headers>
(secondario di <Add>
)
Aggiunge nuove intestazioni alla richiesta o risposta specificata, che è specificata dall'elemento
<AssignTo>
.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <Header> |
Elemento principale |
<Add>
|
Elementi secondari |
<Header> |
L'elemento <Headers>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Add> </HTTPModifier>
Esempio 1
Nell'esempio seguente viene aggiunta un'intestazione partner-id
al messaggio di richiesta e viene assegnato il valore della variabile di flusso verifyapikey.VAK-1.developer.app.partner-id
a questa intestazione.
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
<QueryParams>
(secondario di <Add>
)
Aggiunge nuovi parametri di ricerca alla richiesta. Questo elemento non ha effetto sulla risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <QueryParam> |
Elemento principale |
<Add>
|
Elementi secondari |
<QueryParam> |
L'elemento <QueryParams>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> </HTTPModifier>
Esempio 1
Nell'esempio seguente viene aggiunto il parametro di query myParam
alla richiesta e viene assegnato il valore 42
:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Puoi utilizzare <QueryParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbi HTTP:
GET
,POST
- Tipo di messaggio: richiesta
Inoltre, puoi impostare parametri di ricerca solo quando l'attributo type
dell'elemento <AssignTo>
è un messaggio di richiesta. Impostarle nella risposta non ha alcun effetto.
Se definisci un array vuoto di parametri di ricerca nel criterio (<Add><QueryParams/></Add>
), il criterio non aggiunge parametri di query. Equivale a omettere <QueryParams>
.
<AssignTo>
Determina su quale oggetto funziona il criterio HTTPModifier. Le opzioni sono:
- Messaggio di richiesta:il valore
request
ricevuto dal proxy API. - Messaggio di risposta: il valore
response
restituito dal server di destinazione. - Messaggio personalizzato:un oggetto di richiesta o risposta personalizzato.
Tieni presente che, in alcuni casi, non puoi modificare l'oggetto su cui agisce il criterio HTTPModifier.
Ad esempio, non puoi utilizzare <Add>
o <Set>
per aggiungere o modificare parametri di ricerca
(<QueryParams>
) o i parametri del modulo (<FormParams>
) nella risposta. Puoi manipolare parametri di ricerca e i parametri del modulo solo nella richiesta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<HTTPModifier>
|
Elementi secondari | Nessun valore |
Se non specifichi <AssignTo>
o se specifichi l'elemento <AssignTo>
ma non specifichi un valore di testo per l'elemento, il criterio agisce sulla richiesta o sulla risposta predefinita, che si basa su dove viene eseguito il criterio. Se il criterio viene eseguito nel flusso di richiesta, influisce sul messaggio di richiesta. Se viene eseguito nel flusso di risposta, il criterio influisce sulla risposta per impostazione predefinita.
L'elemento <AssignTo>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> </HTTPModifier>
Esempio 1
L'esempio seguente non specifica nessun messaggio nel testo dell'attributo <AssignTo>
. Ciò significa che il criterio agirà sul messaggio request
o response
, a seconda di dove viene eseguito.
<HTTPModifier name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> ... </HTTPModifier>
Se specifichi createNew="false"
e non fornisci esplicitamente un nome per il messaggio, gli altri attributi di <AssignTo>
non sono pertinenti. In questo caso, potresti omettere completamente l'elemento <AssignTo>
.
Esempio 2
L'esempio seguente crea un nuovo oggetto richiesta, sovrascrivendo l'oggetto esistente:
<HTTPModifier name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> ... </HTTPModifier>
Quando crei un nuovo oggetto richiesta o risposta, gli altri elementi del criterio HTTPModifier (come <Add>
e <Set>
agiscono sul nuovo oggetto richiesta.
Puoi accedere al nuovo oggetto richiesta in altri criteri in un secondo momento nel flusso oppure inviare il nuovo oggetto richiesta a un servizio esterno con un criterio Callout di servizio.
Esempio 3
L'esempio seguente crea un nuovo oggetto richiesta denominato MyRequestObject
:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Quando crei un nuovo oggetto richiesta o risposta, gli altri elementi del criterio HTTPModifier (come <Add>
e <Set>
agiscono sul nuovo oggetto richiesta.
Puoi accedere al nuovo oggetto richiesta in base al nome in altri criteri in un secondo momento nel flusso oppure inviare il nuovo oggetto richiesta a un servizio esterno con un criterio Callout di servizio.
La tabella seguente descrive gli attributi di <AssignTo>
:
Attributo | Descrizione | Obbligatorio? | Tipo |
---|---|---|---|
createNew |
Consente di stabilire se questo criterio crea un nuovo messaggio durante l'assegnazione dei valori. Se Se
Se
|
Facoltativo | Booleano |
transport |
Specifica il tipo di trasporto per il tipo di messaggio di richiesta o risposta. Il valore predefinito è |
Facoltativo | Stringa |
type |
Specifica il tipo del nuovo messaggio quando createNew è true . I valori validi sono request o response .
Il valore predefinito è |
Facoltativo | Stringa |
<DisplayName>
Utilizzalo in aggiunta all'attributo name
per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso e più naturale.
L'elemento <DisplayName>
è comune a tutti i criteri.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo. Se ometti <DisplayName> , viene utilizzato il valore dell'attributo name del criterio. |
Tipo | Stringa |
Elemento principale | <PolicyElement> |
Elementi secondari | Nessuna esperienza |
La sintassi dell'elemento <DisplayName>
è la seguente:
Sintassi
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Esempio
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
L'elemento <DisplayName>
non ha attributi o elementi secondari.
<IgnoreUnresolvedVariables>
Determina se l'elaborazione si interrompe quando viene rilevata una variabile non risolta.
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<HTTPModifier>
|
Elementi secondari | Nessun valore |
Impostalo su true
per ignorare le variabili non risolte e continuare l'elaborazione; altrimenti
false
. Il valore predefinito è false
.
L'impostazione di <IgnoreUnresolvedVariables>
su true
è diversa dall'impostazione di continueOnError
su true
di <HTTPModifier>
perché è specifica per l'impostazione e il recupero dei valori delle variabili. Se imposti continueOnError
su true
, Apigee ignora tutti gli errori, non solo quelli riscontrati durante l'utilizzo delle variabili.
L'elemento <IgnoreUnresolvedVariables>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </HTTPModifier>
Esempio 1
Nell'esempio seguente viene impostato il valore <IgnoreUnresolvedVariables>
su true
:
<HTTPModifier name="HM-Set-Headers"> <Set> <Headers> <Header name='new-header'>{possibly-defined-variable}<Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </HTTPModifier>
Poiché il criterio <IgnoreUnresolvedVariables>
è impostato su true
, se la variabile possibly-defined-variable
non è definita, questo criterio non genererà un errore.
<Remove>
Rimuove intestazioni, parametri di ricerca o parametri del modulo da un messaggio. Un tag vuoto rimuove tutti i parametri corrispondenti, tra cui intestazioni, formparams e queryparams.
Il messaggio interessato può essere una richiesta o una risposta. Puoi specificare il messaggio su cui agisce <Remove>
utilizzando l'elemento <AssignTo>
.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<HTTPModifier>
|
Elementi secondari |
<FormParams> <Headers> <QueryParams> |
Un caso d'uso comune per <Remove>
è eliminare un'intestazione o un parametro di query contenente informazioni sensibili dall'oggetto della richiesta in entrata, per evitare di passarlo al server di backend.
L'elemento <Remove>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> </HTTPModifier>
Esempio 1
L'esempio seguente rimuove tutti i parametri del modulo e un parametro di ricerca dall'oggetto request
:
<HTTPModifier name="HM-remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
L'esempio seguente rimuove tutto da un oggetto messaggio:
<HTTPModifier name="HM-remove-3"> <Remove/> <AssignTo>request</AssignTo> </HTTPModifier>
In genere, esegui questa operazione solo se utilizzi l'elemento <Set>
per impostare alcuni valori sostitutivi nel messaggio.
<FormParams>
(secondario di <Remove>
)
Rimuove dalla richiesta i parametri del modulo specificati. Questo elemento non ha effetto sulla risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <FormParam> o array vuoto |
Elemento principale |
<Remove>
|
Elementi secondari |
<FormParam> |
L'elemento <FormParams>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> </Remove> </HTTPModifier>
Esempio 1
Nell'esempio seguente vengono rimossi tre parametri modulo dalla richiesta:
<HTTPModifier name="HM-remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
L'esempio seguente rimuove tutti i parametri del modulo dalla richiesta:
<HTTPModifier name="HM-remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 3
Se sono presenti più parametri di forma con lo stesso nome, utilizza la seguente sintassi:
<HTTPModifier name="HM-remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Questo esempio rimuove f1
, f2
e il secondo valore di f3
. Se f3
ha un solo valore, non viene rimosso.
Puoi utilizzare <FormParams>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
Content-Type
:application/x-www-form-urlencoded
<Headers>
(secondario di <Remove>
)
Rimuove le intestazioni HTTP specificate dalla richiesta o dalla risposta, indicata dall'elemento
<AssignTo>
.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <Header> o array vuoto |
Elemento principale |
<Remove>
|
Elementi secondari |
<Header> |
L'elemento <Headers>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Remove> </HTTPModifier>
Esempio 1
L'esempio seguente rimuove l'intestazione user-agent
dalla richiesta:
<HTTPModifier name="HM-remove-one-header"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
Nell'esempio seguente vengono rimosse tutte le intestazioni dalla richiesta:
<HTTPModifier name="HM-remove-all-headers"> <Remove> <Headers/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 3
Se sono presenti più intestazioni con lo stesso nome, utilizza la seguente sintassi:
<HTTPModifier name="HM-remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Questo esempio rimuove dalla richiesta h1
, h2
e il secondo valore di h3
. Se h3
ha un solo valore, non viene rimosso.
<QueryParams>
(secondario di <Remove>
)
Rimuove i parametri di ricerca specificati dalla richiesta. Questo elemento non ha effetto sulla risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <QueryParam> o array vuoto |
Elemento principale |
<Remove>
|
Elementi secondari |
<QueryParam> |
L'elemento <QueryParams>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> </HTTPModifier>
Esempio 1
Nell'esempio seguente viene rimosso un singolo parametro di query dalla richiesta:
<HTTPModifier name="HM-remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
L'esempio seguente rimuove tutti parametri di ricerca dalla richiesta:
<HTTPModifier name="HM-remove-queryparams-2"> &tl;Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 3
Se sono presenti più parametri di query con lo stesso nome, utilizza la seguente sintassi:
<HTTPModifier name="HM-remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Questo esempio rimuove dalla richiesta qp1
, qp2
e il secondo valore di qp3
. Se
qp3
ha un solo valore, non viene rimosso.
Esempio 4
Nell'esempio seguente il parametro di query apikey
viene rimosso dalla richiesta:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Puoi utilizzare <QueryParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbi HTTP:
GET
,POST
- Tipo di messaggio: richiesta
<Set>
Imposta le informazioni nel messaggio di richiesta o risposta, che vengono specificate dall'elemento <AssignTo>
. <Set>
sovrascrive le intestazioni o i parametri di query o del modulo già presenti nel messaggio originale oppure ne aggiunge di nuovi, se non sono presenti.
Le intestazioni e i parametri di query e modulo di un messaggio HTTP possono contenere più valori. Per aggiungere ulteriori valori per un'intestazione o un parametro, utilizza invece l'elemento <Add>
.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<HTTPModifier>
|
Elementi secondari |
<FormParams> <Headers> <Path> <QueryParams> <StatusCode> <Verb> <Version> |
L'elemento <Set>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <Path>PATH</Path> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Esempio
L'esempio seguente imposta un'intestazione specifica. Se questo criterio viene associato al flusso di richiesta, consente al sistema upstream di ricevere un'intestazione aggiuntiva non inclusa nella richiesta in entrata originale.
<HTTPModifier name="HM-Set-Header"> <Set> <Headers> <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header> </Headers> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
<FormParams>
(secondario di <Set>
)
Sovrascrive i parametri del modulo esistenti su una richiesta e li sostituisce con i nuovi valori specificati con questo elemento. Questo elemento non ha effetto sulla risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <FormParam> |
Elemento principale |
<Set>
|
Elementi secondari |
<FormParam> |
L'elemento <FormParams>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> </Set> </HTTPModifier>
Esempio 1
L'esempio seguente imposta un parametro di modulo chiamato myparam
sul valore della
variabile request.header.myparam
in una nuova richiesta personalizzata:
<HTTPModifier name="HM-set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request>>MyCustomRequest</AssignTo> </HTTPModifier>
Puoi utilizzare <FormParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP:
POST
- Tipo di messaggio: richiesta
Se definisci parametri di modulo vuoti nel criterio
(<Add><FormParams/></Add>
), il criterio non aggiunge alcun parametro
del modulo. Equivale a omettere <FormParams>
.
<Set>
modifica il valore del campo Content-Type
del messaggio in
application/x-www-form-urlencoded
prima di inviarlo all'endpoint di destinazione.
<Headers>
(secondario di <Set>
)
Sovrascrive le intestazioni HTTP esistenti nella richiesta o nella risposta, specificate dall'elemento <AssignTo>
.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <Header> |
Elemento principale |
<Set>
|
Elementi secondari |
<Header> |
L'elemento <Headers>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Set> </HTTPModifier>
Esempio 1
L'esempio seguente imposta l'intestazione x-ratelimit-remaining
sul valore della
variabile ratelimit.Quota-1.available.count
:
<HTTPModifier name="HM-Set-RateLimit-Header"> <Set> <Headers> <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header> </Headers> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Se definisci intestazioni vuote nel criterio
(<Set><Headers/></Set>
), il criterio non imposta alcuna intestazione. L'operazione
avrà lo stesso effetto dell'omissione di <Headers>
.
<Path>
(secondario di <Set>
)
<QueryParams>
(secondario di <Set>
)
Sovrascrive parametri di ricerca esistenti nella richiesta con nuovi valori. Questo elemento non ha effetto sulla risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <QueryParam> |
Elemento principale |
<Set>
|
Elementi secondari |
<QueryParam> |
L'elemento <QueryParams>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Set> </HTTPModifier>
Esempio 1
L'esempio seguente imposta il parametro di query address
sul valore della
variabile request.header.address
:
<HTTPModifier name="HM-set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </HTTPModifier>
Puoi utilizzare <QueryParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbi HTTP:
GET
,POST
- Tipo di messaggio: richiesta
Se definisci parametri di ricerca vuoti nel criterio
(<Set><QueryParams/></Set>
), il criterio non imposta alcun parametro
di query. Equivale a omettere <QueryParams>
.
<StatusCode>
(secondario di <Set>
)
Imposta il codice di stato sulla risposta. Questo elemento non ha effetto su una richiesta.
Valore predefinito | "200" (quando l'attributo createNew di <AssignTo>
è impostato su "true") |
Obbligatorio? | Facoltativo |
Tipo | Stringa o VARIABLE |
Elemento principale |
<Set>
|
Elementi secondari | Nessun valore |
L'elemento <StatusCode>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> </Set> </HTTPModifier>
Esempio 1
L'esempio seguente imposta un codice di stato semplice:
<HTTPModifier name="HM-set-statuscode-404"> <Set> <StatusCode>404<<StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Esempio 2
I contenuti di <StatusCode>
vengono trattati come un modello di messaggio. Ciò significa che un nome di variabile racchiuso tra parentesi graffe verrà sostituito in fase di runtime con il valore della variabile di riferimento, come mostra l'esempio seguente:
<HTTPModifier name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Puoi utilizzare <StatusCode>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: risposta
<Verb>
(secondario di <Set>
)
Imposta il verbo HTTP nella richiesta. Questo elemento non ha effetto sulla risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Stringa o VARIABLE |
Elemento principale |
<Set>
|
Elementi secondari | Nessun valore |
L'elemento <Verb>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </HTTPModifier>
Esempio 1
L'esempio seguente imposta un verbo semplice nella richiesta:
<HTTPModifier name="HM-set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
I contenuti di <Verb>
vengono trattati come un modello di messaggio. Ciò significa che un nome di variabile racchiuso tra parentesi graffe verrà sostituito in fase di runtime con il valore della variabile di riferimento.
L'esempio seguente utilizza una variabile per completare un verbo:
<HTTPModifier name="HM-set-verb-to-dynamic-value"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Puoi utilizzare <Verb>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
<Version>
(secondario di <Set>
)
Imposta la versione HTTP su una richiesta. Questo elemento non ha effetto sulla risposta.
Valore predefinito | N/A |
Obbligatorio? | Facoltativo |
Tipo | Stringa o VARIABLE |
Elemento principale |
<Set>
|
Elementi secondari | Nessun valore |
L'elemento <Version>
utilizza la seguente sintassi:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Esempio 1
Nell'esempio seguente il numero di versione è impostato su 1.1
:
<HTTPModifier name="HM-set-version-1"> <Set> <Version>1.1</Version> </Set> </HTTPModifier>
Esempio 2
Quanto segue utilizza una variabile tra parentesi graffe per impostare il numero di versione:
<HTTPModifier name="HM-set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
I contenuti di <Version>
vengono trattati come un modello di messaggio. Ciò significa che un nome di variabile racchiuso tra parentesi graffe verrà sostituito in fase di runtime con il valore della variabile di riferimento.
Puoi utilizzare <Version>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
Crea messaggi di richiesta personalizzati
Puoi utilizzare HTTPModifier per creare un messaggio di richiesta personalizzato. Dopo aver creato una richiesta personalizzata, puoi utilizzarla nei seguenti modi:
- Accedi alle relative variabili in altri criteri
- Passarlo a un servizio esterno
Per creare un messaggio di richiesta personalizzato, utilizza l'elemento <AssignTo>
nel criterio HTTPModifier. Imposta createNew
su true
e specifica il nome del nuovo messaggio nel corpo dell'elemento, come illustrato nell'esempio seguente:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Per impostazione predefinita, Apigee non fa nulla con il messaggio di richiesta personalizzato. Dopo averla creata, Apigee continuerà il flusso con la richiesta originale. Per utilizzare la richiesta personalizzata, aggiungi un criterio che utilizzi il messaggio di richiesta e fai riferimento esplicito al messaggio di richiesta appena creato nella configurazione di quel criterio. Questo ti consente di passare la richiesta personalizzata a un endpoint di servizio esterno.
I seguenti esempi creano messaggi di richiesta personalizzati:
Esempio 1
Nell'esempio seguente viene creato un oggetto di richiesta personalizzato con HTTPModifier:
<HTTPModifier name="HTTPModifier-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </HTTPModifier>
In questo esempio:
- Crea un nuovo oggetto messaggio di richiesta denominato
MyCustomRequest
. - Su MyCustomRequest, questo criterio:
- Imposta il parametro di query
address
nel messaggio personalizzato sul valore del parametro di queryaddy
della richiesta in entrata. - Imposta il verbo HTTP su
GET
.
- Imposta il parametro di query
- Imposta
<IgnoreUnresolvedVariables>
sufalse
. Quando<IgnoreUnresolvedVariables>
èfalse
, se una delle variabili a cui viene fatto riferimento nella configurazione dei criteri non esiste, Apigee entrerà in stato di errore nel flusso API.
Esempio 2
Ecco un altro esempio che mostra come creare un oggetto di richiesta personalizzato con HTTPModifier:
<HTTPModifier name="HTTPModifier-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> </Set> </HTTPModifier>
In questo esempio viene creata una nuova richiesta personalizzata denominata partner.request
. Quindi, imposta <Verb>
sulla nuova richiesta.
Puoi accedere alle varie proprietà di un messaggio personalizzato in un altro criterio HTTPModifier che si verifica più avanti nel flusso. L'esempio seguente recupera il valore di un'intestazione da una risposta personalizzata denominata e lo inserisce in una nuova intestazione del messaggio di richiesta:
<HTTPModifier name="HM-Set-Header"> <AssignTo>request</AssignTo> <Set> <Headers> <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header> </Headers> </Set> </HTTPModifier>
Codici di errore
Questa sezione descrive i codici e i messaggi di errore che vengono restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti per sapere se si stanno sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta gli articoli Cosa devi sapere sugli errori relativi alle norme e Gestione degli errori.
Errori di runtime
Questi errori possono verificarsi quando il criterio viene eseguito.
Codice di errore | Stato HTTP | Causa | Correggi |
---|---|---|---|
entities.UnresolvedVariable |
500 |
Variabile del modello di messaggio in non definita o fuori ambito. | |
steps.httpmodifier.InvalidStatusCode |
500 |
Il valore risolto del codice di stato non è valido. Consulta la stringa di errore per ulteriori informazioni. | build |
Errori di deployment
Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.
Nome errore | Causa | Correggi |
---|---|---|
InvalidIndex |
Se l'indice specificato negli elementi <Remove> del criterio HTTPModifier è 0 o è un numero negativo, il deployment del proxy API non va a buon fine. |
build |
Variabili di errore
Queste variabili vengono impostate quando questo criterio attiva un errore in fase di runtime. Per maggiori informazioni, consulta la sezione Cosa devi sapere sugli errori dei criteri.
Variabili | Dove | Esempio |
---|---|---|
httpmodifier.POLICY_NAME.failed |
POLICY_NAME è il nome specificato dall'utente del criterio che ha generato l'errore. | httpmodifier.HM-SetResponse.failed = true |
Esempio di risposta di errore
{ "fault":{ "detail":{ "errorcode":"steps.httpmodifier.InvalidStatusCode" }, "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request" } }
Esempio di regola di errore
<FaultRule name="HTTPModifier Faults"> <Step> <Name>HM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "InvalidStatusCode")</Condition> </Step> <Condition>(httpmodifier.failed = true)</Condition> </FaultRule>
Schema
Ogni tipo di criterio è definito da uno schema XML (.xsd
). Per riferimento, gli schemi dei criteri sono disponibili su GitHub.