Cosa
Il criterio HTTPModifier può modificare un messaggio di richiesta o risposta esistente.
Il criterio consente di eseguire le azioni seguenti sui messaggi:
- Aggiungere nuovi parametri di modulo, intestazioni o parametri di ricerca a un messaggio.
- Rimuovere intestazioni, parametri di query e parametri di modulo da un messaggio
- Imposta 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 un target alternativo, come descritto in Creare messaggi di richiesta personalizzati.
Il criterio HTTPModifier può creare variabili di flusso con il seguente elemento figlio elementi:
Nell'ordine in cui organizzi <Add>
, <Set>
,
e <Remove>
è importante. Il criterio esegue queste azioni nell'ordine in cui appaiono nella configurazione del criterio. Se devi rimuovere tutte le intestazioni, imposta un valore
un'intestazione specifica, devi includere l'elemento <Remove>
prima dell'elemento <Set>
.
Questo criterio è un criterio standard e può essere implementato in qualsiasi tipo di ambiente. Per informazioni sui tipi di criteri e sulla loro disponibilità in base a ciascun 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/D |
Elementi secondari |
<Add> <AssignTo> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
La sintassi dell'elemento <HTTPModifier>
è la seguente:
Sintassi
La sintassi dell'elemento <HTTPModifier>
è la seguente:
<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 tuo flusso nella UI 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 si inserisce un nuovo criterio HTTPModifier nella UI di Apigee, il modello contiene stub per
le possibili operazioni. In genere, devi selezionare le operazioni da eseguire con questo criterio
e rimuovi gli altri elementi secondari. Ad esempio, se vuoi eseguire un'operazione di aggiunta, utilizza l'elemento
<Add>
e rimuovi <Remove>
e gli 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 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, specificati da
<AssignTo> .
|
Altri elementi secondari | ||
<AssignTo> |
Facoltativo | Specifica su quale messaggio opera il criterio HTTPModifier. Può trattarsi della richiesta o della risposta standard oppure di 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 che seguono.
Esempi
I seguenti esempi mostrano alcuni dei modi in cui puoi utilizzare il criterio HTTPModifier:
1: aggiungi l'intestazione
Nell'esempio seguente viene aggiunta un'intestazione alla richiesta con
Elemento <Add>
. In questo esempio viene generata la variabile VerificationAPIKey
In base al criterioVerifyAPIKey:
<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
Nell'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>
Questo esempio non crea un nuovo messaggio. Al contrario, modifica un messaggio di risposta esistente aggiungendo un'intestazione HTTP.
Poiché questo esempio specifica response
come nome della variabile nell'elemento
<AssignTo>
, questa norma modifica l'oggetto risposta impostato inizialmente con i dati restituiti dal server di destinazione.
L'intestazione HTTP aggiunta al messaggio di risposta da questo criterio è derivata da una variabile compilata dal criterio LookupCache. Di conseguenza, il messaggio di risposta modificato Il criterio HTTPModifier contiene un'intestazione HTTP che indica se i risultati sono stati o meno dalla cache. L'impostazione delle intestazioni nella risposta può essere utile per il debug e risoluzione dei problemi.
3: rimuovi il parametro di query
L'esempio seguente rimuove il parametro di query apikey
dalla richiesta:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
È buona norma rimuovere il parametro di query apikey
dal messaggio di richiesta
quando utilizzi il criterio VerifyAPIKey per l'autenticazione dell'utente. Questo per impedire che informazioni chiave sensibili vengano trasmesse al target di backend.
Riferimento all'elemento secondario
Questa sezione descrive gli elementi secondari di <HTTPModifier>
.
<Add>
Aggiunge informazioni alla richiesta o alla risposta, specificate dal <AssignTo>
.
L'elemento <Add>
aggiunge nuove proprietà al messaggio che non esistono nell'originale
per creare un nuovo messaggio email. Tieni presente che anche <Set>
offre questa funzionalità. Per modificare i valori delle proprietà esistenti, utilizza l'elemento <Set>
.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<HTTPModifier>
|
Elementi secondari |
<FormParams> <Headers> <QueryParams> |
La sintassi dell'elemento <Add>
è la seguente:
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
Nell'esempio seguente viene utilizzato l'elemento <FormParams>
per ottenere i valori di
tre parametri della stringa di query dalla richiesta iniziale e impostarli come parametri del 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 target:
<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 una singola query
con un valore statico alla richiesta:
<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 osservi i risultati in uno strumento
ad esempio 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 messaggio.
<FormParams>
(secondario di <Add>
)
Aggiunge nuovi parametri di modulo al messaggio di richiesta. Questo elemento non ha alcun effetto su un messaggio di risposta.
Valore predefinito | N/D |
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
Nell'esempio seguente viene aggiunto un singolo parametro di modulo (answer
) e un valore statico (42
) per
la richiesta:
<HTTPModifier name="HM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
Il seguente esempio recupera il valore del parametro di query name
, lo aggiunge alla richiesta come parametro di modulo e poi rimuove il parametro di query:
<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
alla richiesta.
Esempio 3
Nell'esempio seguente vengono aggiunti più parametri di 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 ottiene i parametri della stringa di query dalla richiesta di origine e li aggiunge come parametri del modulo con nomi diversi. Successivamente, rimuove i parametri di ricerca originali. Apigee invierà la richiesta modificata all'endpoint di destinazione.
Puoi utilizzare lo strumento di debug per osservare il flusso. Vedrai che il corpo della richiesta contiene i dati del modulo con codifica URL, che erano stati originariamente trasmessi come stringa di query parametri:
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: impostato su un valore o su
""
(la stringa vuota). Ad esempio, concurl
, aggiungi-d ""
alla tua richiesta. Content-Length
header: impostato su 0 (se non sono presenti dati nella richiesta originale; in caso contrario, la lunghezza corrente in byte). Ad esempio, concurl
aggiungi-H "Content-Length: 0"
alla tua richiesta.
- Dati del modulo: impostato su un valore o su
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>
(elemento secondario di <Add>
)
Aggiunge nuove intestazioni alla richiesta o alla risposta specificate, specificate dal
Elemento <AssignTo>
.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Array di <Header> elementi |
Elemento principale |
<Add>
|
Elementi secondari |
<Header> |
La sintassi dell'elemento <Headers>
è la seguente:
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
assegna il valore della variabile di flusso verifyapikey.VAK-1.developer.app.partner-id
a quell'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 query alla richiesta. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Array di <QueryParam> elementi |
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
a favore:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Puoi utilizzare <QueryParams>
solo se sono soddisfatti i seguenti criteri:
- Verbi HTTP:
GET
,POST
- Tipo di messaggio: richiesta
Inoltre, puoi impostare i parametri di query solo quando l'attributo type
dell'elemento <AssignTo>
è un messaggio di richiesta. La loro impostazione nella risposta non ha alcun effetto.
Se nel criterio viene definito un array vuoto di parametri di ricerca
(<Add><QueryParams/></Add>
), il criterio non aggiunge alcuna query
parametri. È lo stesso che omettere <QueryParams>
.
<AssignTo>
Determina su quale oggetto opera il criterio HTTPModifier. Le opzioni sono:
- Messaggio di richiesta: l'
request
ricevuto dal proxy API - Messaggio di risposta: il
response
restituito dal server di destinazione. - Messaggio personalizzato: un oggetto di richiesta o risposta personalizzato
Tieni presente che, in alcuni casi, non è possibile 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 parametri del modulo (<FormParams>
) nella risposta. Puoi solo manipulare i parametri di query e i parametri del modulo nella richiesta.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<HTTPModifier>
|
Elementi secondari | Nessuno |
Se non specifichi <AssignTo>
o se specifichi l'elemento <AssignTo>
ma devi
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.
La sintassi dell'elemento <AssignTo>
è la seguente:
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 alcun messaggio nel testo del <AssignTo>
. Ciò implica
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"/>-- no-op --> ... </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
Nell'esempio seguente viene creato un nuovo oggetto di richiesta, sovrascrivendo l'oggetto esistente:
<HTTPModifier name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> ... </HTTPModifier>
Quando crei un nuovo oggetto di richiesta o risposta, gli altri elementi del criterio HTTPModifier
(ad esempio <Add>
e <Set>
) agiscono su quel nuovo
oggetto di richiesta.
Puoi accedere al nuovo oggetto richiesta in altri criteri più avanti nel flusso oppure inviare il nuovo oggetto richiesta a un servizio esterno con un criterio ServiceCallout.
Esempio 3
Il seguente esempio crea un nuovo oggetto request denominato MyRequestObject
:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Quando crei un nuovo oggetto di richiesta o risposta, gli altri elementi di HTTPModifier
(ad esempio <Add>
e <Set>
agiscono in base al nuovo
di richiesta di addestramento.
Puoi accedere al nuovo oggetto richiesta per nome in altri criteri più avanti nel flusso oppure inviare il nuovo oggetto richiesta a un servizio esterno con un criterio ServiceCallout.
Nella tabella seguente vengono descritti gli attributi di <AssignTo>
:
Attributo | Descrizione | Obbligatorio? | Tipo |
---|---|---|---|
createNew |
Determina 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 . Valido
sono request o response .
Il valore predefinito è |
Facoltativo | Stringa |
<DisplayName>
Da utilizzare insieme 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/D |
Obbligatorio? | Facoltativo. Se ometti <DisplayName> , viene utilizzato il valore dell'attributo name del criterio. |
Tipo | Stringa |
Elemento principale | <PolicyElement> |
Elementi secondari | Nessuno |
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 | Nessuno |
Imposta 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
di <HTTPModifier>
su true
in quanto è specifica per l'impostazione e l'ottenimento dei valori delle variabili. Se imposti continueOnError
su true
, Apigee ignora tutti gli errori, non solo quelli rilevati durante l'utilizzo delle variabili.
La sintassi dell'elemento <IgnoreUnresolvedVariables>
è la seguente:
Sintassi
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </HTTPModifier>
Esempio 1
L'esempio seguente imposta <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é <IgnoreUnresolvedVariables>
è impostato su true
, se
la variabile possibly-defined-variable
non è definita, questo criterio verrà
non generare 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, parametri modulo e queryparams.
Il messaggio interessato può essere una richiesta o una risposta. Tu specifichi quale messaggio <Remove>
interviene utilizzando l'elemento <AssignTo>
.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<HTTPModifier>
|
Elementi secondari |
<FormParams> <Headers> <QueryParams> |
Un caso d'uso comune per <Remove>
è eliminare un parametro di query o un'intestazione contenente informazioni sensibili dall'oggetto della richiesta in arrivo, per evitare di trasmetterle al server di backend.
La sintassi dell'elemento <Remove>
è la seguente:
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 query da
l'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>
Di solito, questa operazione viene eseguita solo se vuoi utilizzare l'elemento <Set>
per
imposta alcuni valori sostitutivi nel messaggio.
<FormParams>
(elemento secondario di <Remove>
)
Rimuove i parametri del modulo specificati dalla richiesta. Questo elemento non ha alcun effetto su un la risposta corretta.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <FormParam> o un 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
L'esempio seguente rimuove tre parametri del 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 form 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 elemento
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>
(elemento secondario di <Remove>
)
Rimuove le intestazioni HTTP specificate dalla richiesta o dalla risposta, come specificato dall'elemento
<AssignTo>
.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <Header> o un array vuoto |
Elemento principale |
<Remove>
|
Elementi secondari |
<Header> |
La sintassi dell'elemento <Headers>
è la seguente:
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
L'esempio seguente rimuove tutte le intestazioni dalla richiesta:
<HTTPModifier name="HM-remove-all-headers"> <Remove> <Headers/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 3
Se esistono 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 h1
, h2
e il secondo valore di h3
dalla richiesta. Se h3
ha un solo valore, non viene rimosso.
<QueryParams>
(secondario di <Remove>
)
Rimuove dalla richiesta i parametri di ricerca specificati. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <QueryParam> o un 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
L'esempio seguente rimuove 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 i parametri di query dalla richiesta:
<HTTPModifier name="HM-remove-queryparams-2"> &tl;Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 3
Se esistono 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 qp1
, qp2
e il secondo valore di qp3
dalla richiesta. Se
qp3
ha un solo valore, quindi non viene rimosso.
Esempio 4
L'esempio seguente rimuove il parametro di query apikey
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 è specificato dal
Elemento <AssignTo>
. <Set>
sovrascrive le intestazioni o
parametri di query o modulo già esistenti nel messaggio originale o aggiungerne di nuovi se non sono presenti.
Le intestazioni e i parametri di query e modulo in un messaggio HTTP possono contenere più valori. Per aggiungere valori aggiuntivi per un'intestazione o un parametro, utilizza l'elemento <Add>
.
Valore predefinito | N/D |
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. Quando questo criterio viene collegato nel flusso di richiesta, consente al sistema upstream di ricevere un'intestazione aggiuntiva non inclusa nel 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>
(elemento secondario di <Set>
)
Sostituisce i parametri del modulo esistenti in una richiesta e li sostituisce con i nuovi valori specificati con questo elemento. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | N/D |
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
Nell'esempio seguente, un parametro del modulo chiamato myparam
viene impostato 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 sono soddisfatti i seguenti criteri:
- Verbo HTTP:
POST
- Tipo di messaggio: richiesta
Se nel criterio
(<Add><FormParams/></Add>
) definisci parametri di modulo vuoti, il criterio non aggiunge parametri
di modulo. È come omettere <FormParams>
.
<Set>
modifica il valore Content-Type
del messaggio in
application/x-www-form-urlencoded
prima di inviarlo all'endpoint di destinazione.
<Headers>
(elemento secondario di <Set>
)
Sovrascrive le intestazioni HTTP esistenti nella richiesta o nella risposta, specificata dal parametro
Elemento <AssignTo>
.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Array di <Header> elementi |
Elemento principale |
<Set>
|
Elementi secondari |
<Header> |
La sintassi dell'elemento <Headers>
è la seguente:
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
Nell'esempio seguente l'intestazione x-ratelimit-remaining
viene impostata sul valore del valore
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 nessuna intestazione. Questo
avrà lo stesso effetto dell'omissione di <Headers>
.
<Path>
(secondario di <Set>
)
<QueryParams>
(elemento secondario di <Set>
)
Sovrascrive parametri di ricerca esistenti nella richiesta con nuovi valori. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Array di <QueryParam> elementi |
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 di
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 query vuoti nel criterio
(<Set><QueryParams/></Set>
), il criterio non imposta alcun parametro
di query. È lo stesso che omettere <QueryParams>
.
<StatusCode>
(elemento secondario di <Set>
)
Imposta il codice di stato nella risposta. Questo elemento non ha alcun 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 | Nessuno |
La sintassi dell'elemento <StatusCode>
è la seguente:
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 considerati un modello di messaggio. Ciò significa che un
nome di variabile racchiuso tra parentesi graffe verrà sostituito in fase di esecuzione con il valore della
variabile a cui fa riferimento, come mostrato nell'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 sulla richiesta. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Stringa o VARIABLE |
Elemento principale |
<Set>
|
Elementi secondari | Nessuno |
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 sulla richiesta:
<HTTPModifier name="HM-set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Esempio 2
I contenuti di <Verb>
vengono considerati un modello di messaggio. Ciò significa che un nome di variabile
racchiuso tra parentesi graffe verrà sostituito in fase di esecuzione con il valore della variabile
a cui fa riferimento.
L'esempio seguente utilizza una variabile per compilare 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>
(elemento secondario di <Set>
)
Imposta la versione HTTP in una richiesta. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | N/D |
Obbligatorio? | Facoltativo |
Tipo | Stringa o VARIABLE |
Elemento principale |
<Set>
|
Elementi secondari | Nessuno |
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 viene impostato su 1.1
:
<HTTPModifier name="HM-set-version-1"> <Set> <Version>1.1</Version> </Set> </HTTPModifier>
Esempio 2
Il codice seguente 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 considerati un modello di messaggio. Ciò significa che un
nome di variabile racchiuso tra parentesi graffe verrà sostituito in fase di esecuzione con il valore della variabile
a cui fa riferimento.
Puoi utilizzare <Version>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
Creare 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:
- Accedere alle relative variabili in altri criteri
- Trasmetterlo a un servizio esterno
Per creare un messaggio di richiesta personalizzato, utilizza l'elemento <AssignTo>
in 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 interviene in alcun modo sul messaggio di richiesta personalizzato. Dopo averlo creato, Apigee durante il flusso con la richiesta originale. Per utilizzare la richiesta personalizzata, aggiungi un criterio che utilizzi il messaggio di richiesta e fai esplicitamente riferimento al messaggio di richiesta appena creato nella configurazione del criterio. In questo modo potrai passare la richiesta personalizzata a un endpoint di servizio esterno.
I seguenti esempi creano messaggi di richiesta personalizzati:
Esempio 1
L'esempio seguente crea 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>
Questo esempio:
- Crea un nuovo oggetto del messaggio di richiesta denominato
MyCustomRequest
. - In MyCustomRequest, queste norme:
- Imposta il parametro di query
address
nel messaggio personalizzato sul valore di il 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 del criterio non esiste, Apigee entrerà nello stato di errore nel flusso dell'API.
Esempio 2
Di seguito è riportato 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>
Questo esempio crea 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 etichettata e la inserisce in una nuova intestazione nel 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 di errore e i messaggi di errore restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per saperne di più, consulta Cosa devi sapere sugli errori relativi ai criteri e sulla gestione di errore.
Errori di runtime
Questi errori possono verificarsi durante l'esecuzione del criterio.
Codice guasto | 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. Vedi la stringa di errore per ulteriori informazioni 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 ulteriori informazioni, consulta Informazioni importanti sugli errori relativi alle norme.
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>
Schemi
Ogni tipo di criterio è definito da uno schema XML (.xsd
). Per riferimento,
schemi di criteri
sono disponibili su GitHub.