Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Il criterio HTTPModifier modifica un messaggio di richiesta o risposta esistente.
La norma ti consente di eseguire le seguenti azioni su questi messaggi:
- Aggiungere nuovi parametri del modulo, intestazioni o parametri di ricerca a un messaggio
- Rimuovere intestazioni, parametri di query e parametri del 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 una richiesta personalizzata o un messaggio di risposta 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 organizzi gli elementi <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 e impostarne
una specifica, devi includere l'elemento <Remove> prima dell'elemento <Set>.
Questa policy è una policy standard e può essere implementata in qualsiasi tipo di ambiente. Per informazioni sui tipi di policy e sulla disponibilità con ogni tipo di ambiente, consulta Tipi di policy.
Elemento <HTTPModifier>
Definisce un criterio HTTPModifier.
| Valore predefinito | Consulta la scheda Policy predefinita di seguito. |
| Obbligatorio? | Obbligatorio |
| Tipo | Oggetto complesso |
| Elemento principale | N/D |
| 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>
Norme predefinite
L'esempio seguente mostra le impostazioni predefinite quando aggiungi una norma HTTPModifier al flusso nell'interfaccia utente 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 una nuova policy HTTPModifier nella UI di Apigee, il modello contiene stub per tutte le
operazioni possibili. In genere, selezioni le operazioni che vuoi eseguire con questo criterio
e rimuovi il resto degli elementi secondari. Ad esempio, se vuoi eseguire un'operazione di aggiunta, utilizza 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/D | Obbligatorio |
Il nome interno del criterio. Il valore dell'attributo Se vuoi, utilizza l'elemento |
continueOnError |
falso | Facoltativo | Imposta su false per restituire un errore quando un criterio non va a buon fine. Questo è un comportamento previsto per la maggior parte dei criteri. Imposta su true per continuare l'esecuzione del flusso anche dopo un fallimento del 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 | Ritirato | 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 le intestazioni o i parametri esistenti, utilizza l'elemento |
<Remove> |
Facoltativo | Elimina gli elementi specificati dalla variabile del messaggio specificata nell'elemento
<AssignTo>. |
<Set> |
Facoltativo | Sostituisce i valori delle proprietà esistenti nella richiesta o nella risposta, specificati dall'elemento <AssignTo>.
|
| Altri elementi secondari | ||
<AssignTo> |
Facoltativo | Specifica il messaggio su cui 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. |
Ognuno di questi elementi secondari è descritto nelle sezioni seguenti.
Esempi
Gli esempi seguenti mostrano alcuni modi in cui puoi utilizzare la policy HTTPModifier:
1. Aggiungi intestazione
L'esempio seguente aggiunge un'intestazione alla richiesta con l'elemento
<Add>. La variabile VerifyAPIKey in questo esempio viene generata
dalle norme VerifyAPIKey:
<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>Questo esempio non crea un nuovo messaggio. Modifica invece un messaggio di risposta esistente aggiungendo un'intestazione HTTP.
Poiché questo esempio specifica response come nome della variabile nell'elemento
<AssignTo>, questa policy modifica l'oggetto risposta originariamente
impostato con i dati restituiti dal server di destinazione.
L'intestazione HTTP aggiunta al messaggio di risposta da queste norme deriva da una variabile compilata dalle norme LookupCache. Pertanto, il messaggio di risposta modificato da questo criterio HTTPModifier contiene un'intestazione HTTP che indica se i risultati sono stati estratti dalla cache o meno. L'impostazione delle intestazioni nella risposta può essere utile per il debug e la risoluzione dei problemi.
3: Rimuovi parametro di query
Il seguente esempio 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>È una best practice rimuovere il parametro di query apikey dal messaggio di richiesta
quando utilizzi il criterio VerifyAPIKey per l'autenticazione utente. In questo modo, impedisci
il trasferimento di informazioni sensibili sulle chiavi al backend di destinazione.
Riferimento all'elemento secondario
Questa sezione descrive gli elementi secondari di <HTTPModifier>.
<Add>
Aggiunge informazioni alla richiesta o alla risposta, specificate dall'elemento <AssignTo>.
L'elemento <Add> aggiunge nuove proprietà al messaggio che non esistono nel messaggio originale. 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> |
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 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 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 un singolo parametro di 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 preflusso 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> (figlio di <Add>)
Aggiunge nuovi parametri del 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
Il seguente esempio aggiunge un singolo parametro del 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
Il seguente esempio recupera il valore del parametro di query name e
lo aggiunge alla richiesta come parametro del modulo, quindi 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 solo alla richiesta.
Esempio 3
L'esempio seguente aggiunge 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. Dopodiché, 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 codificati nell'URL, che originariamente sono stati passati come parametri della stringa di query:
username=nick&zip_code=90210&default_language=en
Puoi utilizzare <FormParams> solo se sono 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
""(stringa vuota). Ad esempio, concurl, aggiungi-d ""alla richiesta. - Intestazione
Content-Length: impostata su 0 (se non sono presenti dati nella richiesta originale; in caso contrario, la lunghezza corrente, in byte). Ad esempio, concurlaggiungi-H "Content-Length: 0"alla 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> (figlio di <Add>)
Aggiunge nuove intestazioni alla richiesta o alla risposta specificata, che viene specificata dall'elemento
<AssignTo>.
| Valore predefinito | N/D |
| 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
L'esempio seguente aggiunge un'intestazione partner-id al messaggio di richiesta e
assegna 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> (figlio di <Add>)
Aggiunge nuovi parametri di ricerca alla richiesta. Questo elemento non ha alcun effetto su una risposta.
| Valore predefinito | N/D |
| 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
L'esempio seguente aggiunge il parametro di ricerca myParam alla richiesta e gli assegna 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 sono 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. L'impostazione nella risposta non ha alcun effetto.
Se definisci un array vuoto di parametri di ricerca nella norma
(<Add><QueryParams/></Add>), la norma non aggiunge alcun parametro
di ricerca. Equivale a omettere <QueryParams>.
<AssignTo>
Determina su quale oggetto opera il criterio HTTPModifier. Le opzioni sono:
- Messaggio di richiesta:il
requestricevuto dal proxy API - Messaggio di risposta:il
responserestituito 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 la policy 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 solo i parametri di ricerca 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 non specifichi un valore di testo per l'elemento, il criterio agisce sulla richiesta o sulla risposta predefinita, in base a dove viene eseguito. Se la policy viene eseguita nel flusso di richiesta, influisce sul messaggio di richiesta. Se viene eseguita nel flusso di risposta, la norma 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 alcun messaggio nel testo di <AssignTo>. Ciò implica
che la policy agirà sul messaggio request o response,
a seconda di dove viene eseguita.
<HTTPModifier name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/>-- no-op --> ... </HTTPModifier>
Se specifichi createNew="false" e non fornisci esplicitamente un nome del messaggio,
gli altri attributi di <AssignTo> non sono pertinenti. In questo caso, potresti
voler 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 delle norme HTTPModifier (ad esempio <Add> e <Set> agiscono su questo nuovo
oggetto richiesta.
Puoi accedere al nuovo oggetto richiesta in altre policy più avanti nel flusso o inviare il nuovo oggetto richiesta a un servizio esterno con una policy ServiceCallout.
Esempio 3
Il seguente esempio 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 delle norme HTTPModifier (ad esempio <Add> e <Set> agiscono su questo nuovo
oggetto richiesta.
Puoi accedere al nuovo oggetto richiesta per nome in altre policy più avanti nel flusso oppure inviare il nuovo oggetto richiesta a un servizio esterno con una policy ServiceCallout.
La tabella seguente descrive 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 di nuovo messaggio quando createNew è true. I valori validi 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 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 <HTTPModifier>'s
continueOnError 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 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
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
non genererà un errore.
<Remove>
Rimuove le intestazioni, i parametri di query o i parametri del modulo da un messaggio. Un tag vuoto rimuove tutti i parametri corrispondenti, inclusi intestazioni, formparams e queryparams.
Il messaggio interessato può essere una richiesta o una risposta. Specifichi su quale messaggio <Remove>
agisce 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 che contiene informazioni sensibili
dall'oggetto 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 query 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, questa operazione viene eseguita solo se si intende utilizzare l'elemento <Set> per
impostare alcuni valori di sostituzione nel messaggio.
<FormParams> (figlio di <Remove>)
Rimuove i parametri del modulo specificati dalla richiesta. Questo elemento non ha alcun effetto su una risposta.
| 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 del modulo 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 sono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
Content-Type:application/x-www-form-urlencoded
<Headers> (figlio di <Remove>)
Rimuove le intestazioni HTTP specificate dalla richiesta o dalla risposta, specificate dall'elemento
<AssignTo>.
| Valore predefinito | N/D |
| Obbligatorio? | Facoltativo |
| Tipo | Array di elementi <Header> o un 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
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 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 h1, h2 e il secondo valore di h3 dalla richiesta. Se h3
ha un solo valore, non viene rimosso.
<QueryParams> (figlio di <Remove>)
Rimuove i parametri di ricerca specificati dalla richiesta. 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
Il seguente esempio 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 qp1, qp2 e il secondo valore di qp3 dalla richiesta. Se
qp3 ha un solo valore, non viene rimosso.
Esempio 4
Il seguente esempio 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 sono soddisfatti i seguenti criteri:
- Verbi HTTP:
GET,POST - Tipo di messaggio: richiesta
<Set>
Imposta le informazioni nel messaggio di richiesta o risposta, specificate dall'elemento
<AssignTo>. <Set> sovrascrive le intestazioni o
i parametri di query o modulo già esistenti nel messaggio originale o ne aggiunge di nuovi se non esistono.
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 invece 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 allegato al flusso di richiesta, il sistema upstream potrà 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> (figlio di <Set>)
Sovrascrive i parametri del modulo esistenti in una richiesta e li sostituisce con i nuovi valori che specifichi 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
Il seguente esempio imposta un parametro del 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 sono soddisfatti i seguenti criteri:
- Verbo HTTP:
POST - Tipo di messaggio: richiesta
Se definisci parametri del modulo vuoti nelle norme
(<Add><FormParams/></Add>), le norme non aggiungono parametri
del modulo. Equivale a omettere <FormParams>.
<Set> modifica il Content-Type del messaggio in
application/x-www-form-urlencoded prima di inviarlo all'endpoint di destinazione.
<Headers> (figlio di <Set>)
Esegue l'override delle intestazioni HTTP esistenti nella richiesta o nella risposta, specificate dall'elemento
<AssignTo>.
| Valore predefinito | N/D |
| 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. Questa operazione
avrà lo stesso effetto dell'omissione di <Headers>.
<Path> (figlio di <Set>)
<QueryParams> (figlio 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 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 sono soddisfatti i seguenti criteri:
- Verbi HTTP:
GET,POST - Tipo di messaggio: richiesta
Se definisci parametri di ricerca vuoti nella policy
(<Set><QueryParams/></Set>), la policy non imposta alcun parametro di query. Equivale a omettere <QueryParams>.
<StatusCode> (figlio 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 |
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 semplice codice di stato:
<HTTPModifier name="HM-set-statuscode-404">
<Set>
<StatusCode>404<<StatusCode>
</Set>
<AssignTo>response</AssignTo>
</HTTPModifier>Esempio 2
Il contenuto di <StatusCode> viene trattato 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 a cui viene fatto 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 sono soddisfatti i seguenti criteri:
- Tipo di messaggio: risposta
<Verb> (figlio di <Set>)
Imposta il verbo HTTP nella 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 nella richiesta:
<HTTPModifier name="HM-set-verb-1">
<Set>
<Verb>POST</Verb>
</Set>
<AssignTo>request</AssignTo>
</HTTPModifier>Esempio 2
Il contenuto di <Verb> viene trattato 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
a cui viene fatto 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 sono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
<Version> (figlio di <Set>)
Imposta la versione HTTP su 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
L'esempio seguente imposta il numero di versione su 1.1:
<HTTPModifier name="HM-set-version-1">
<Set>
<Version>1.1</Version>
</Set>
</HTTPModifier>Esempio 2
Il seguente esempio 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>Il contenuto di <Version> viene trattato 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 a cui viene fatto riferimento.
Puoi utilizzare <Version> solo se sono 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 altre policy
- Trasferirlo 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 mostrato nell'esempio seguente:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Per impostazione predefinita, Apigee non esegue alcuna operazione con il messaggio di richiesta personalizzato. Dopo averlo creato, Apigee continuerà il flusso con la richiesta originale. Per utilizzare la richiesta personalizzata, aggiungi una policy che utilizzi il messaggio di richiesta e faccia riferimento esplicito al messaggio di richiesta appena creato nella configurazione della policy. In questo modo potrai passare la richiesta personalizzata a un endpoint di servizio esterno.
Gli esempi seguenti creano messaggi di richiesta personalizzati:
Esempio 1
Il seguente esempio crea un oggetto 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 messaggio di richiesta denominato
MyCustomRequest. - Su MyCustomRequest, queste norme:
- Imposta il parametro di query
addressnel messaggio personalizzato sul valore del parametro di queryaddydella 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 della policy non esiste, Apigee entra nello stato di errore nel flusso API.
Esempio 2
Ecco un altro esempio che mostra come creare un oggetto 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. e imposta <Verb> sulla nuova richiesta.
Puoi accedere alle varie proprietà di un messaggio personalizzato in un altro criterio HTTPModifier che si verifica in un secondo momento nel flusso. Il seguente esempio recupera il valore di un'intestazione da una risposta personalizzata denominata e lo 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 scoprire di più, consulta Informazioni importanti sugli errori relativi alle norme e Gestione degli errori.
Errori di runtime
Questi errori possono verificarsi durante l'esecuzione del criterio.
| Codice guasto | Stato HTTP | Causa | Correggi |
|---|---|---|---|
entities.UnresolvedVariable |
500 |
La variabile del modello di messaggio è in Undefined o fuori ambito. | |
steps.httpmodifier.InvalidStatusCode |
500 |
Il valore risolto del codice di stato non è valido. Per ulteriori informazioni, consulta la stringa di errore. | build |
Errori di deployment
Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.
| Nome dell'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 esecuzione. 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 policy è definito da uno schema XML (.xsd). Per riferimento,
gli schemi delle policy
sono disponibili su GitHub.