Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Cosa
Il criterioAssignMessage modifica o crea nuovi messaggi di richiesta e risposta durante il flusso del proxy API. Il criterio consente di eseguire le azioni seguenti sui messaggi:
- Aggiungere nuovi parametri di modulo, intestazioni o parametri di ricerca a un messaggio.
- Copiare proprietà esistenti da un messaggio all'altro
- Rimuovi intestazioni, parametri di query, parametri del modulo e/o messaggio payload da un messaggio
- Imposta il valore delle proprietà esistenti in un messaggio
Con il criterioAssignMessage, in genere puoi aggiungere, modificare o rimuovere le proprietà dei una richiesta o una risposta. Tuttavia, puoi anche utilizzare il criterioAssignMessage per creare un un messaggio di richiesta o risposta e passarlo a una destinazione alternativa, come descritto in Creare messaggi di richiesta personalizzati.
Il criterioAssignMessage può creare o modificare variabili di flusso con il seguente elemento figlio elementi:
<AssignMessage>
elemento
Definisce un criterioAssignMessage.
Valore predefinito | Consulta la scheda Criterio predefinito di seguito |
Obbligatorio? | Obbligatorio |
Tipo | Oggetto complesso |
Elemento principale | n/d |
Elementi secondari |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
L'elemento <AssignMessage>
utilizza la seguente sintassi:
Sintassi
L'elemento <AssignMessage>
utilizza la seguente sintassi:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <!-- All AssignMessage 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> <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>[false|true]</Path> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>[false|true]</ReasonPhrase> <StatusCode>[false|true]</StatusCode> <Verb>[false|true]</Verb> <Version>[false|true]</Version> </Copy> <DisplayName>policy_display_name</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<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> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Criterio predefinito
L'esempio seguente mostra le impostazioni predefinite quando aggiungi un criterioAssignMessage al flusso nella UI di Edge:
<AssignMessage continueOnError="false" enabled="true" name="assign-message-default"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Copy source="request"> <Headers/> <QueryParams/> <FormParams/> <Payload/> <Verb/> <StatusCode/> <ReasonPhrase/> <Path/> </Copy> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> <Payload/> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <AssignVariable> <Name>name</Name> <Value/> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Quando si inserisce un nuovo criterioAssignMessage nella UI di Edge, il modello contiene stub per tutti
le possibili operazioni. In genere, devi selezionare le operazioni che vuoi eseguire con questo criterio
e rimuovi gli altri elementi secondari. Ad esempio, se vuoi eseguire un'operazione di copia, utilizza il metodo
<Copy>
e rimuovi <Add>
, <Remove>
e altri elementi secondari da
per renderlo più leggibile.
Questo elemento ha i seguenti attributi comuni a tutti i criteri:
Attributo | Predefinita | Obbligatorio? | Description (Descrizione) |
---|---|---|---|
name |
N/A | Obbligatorio |
Il nome interno del criterio. Il valore dell'attributo Facoltativamente, utilizza l'elemento |
continueOnError |
false | Facoltativo | Imposta su "false" per restituire un errore quando un criterio non va a buon fine. Si tratta di un comportamento previsto per la maggior parte dei criteri. Impostalo su "true" per far sì che l'esecuzione del flusso continui anche dopo l'esito negativo di un criterio. |
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 |
false | Deprecazione | Questo attributo è obsoleto. |
La tabella seguente fornisce una descrizione generale degli elementi secondari di
<AssignMessage>
:
Elemento secondario | Obbligatorio? | Descrizione |
---|---|---|
Operazioni comuni | ||
<Add> |
Facoltativo | Aggiunge informazioni all'oggetto del messaggio specificato dall'oggetto
<AssignTo> .
|
<Copy> |
Facoltativo | Copia le informazioni dal messaggio specificato dall'source
all'oggetto del messaggio specificato dall'elemento <AssignTo> . |
<Remove> |
Facoltativo | Elimina gli elementi specificati dalla variabile di messaggio specificata in
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 funziona il criterioAssignMessage. Può essere il modello richiesta o risposta oppure può essere un nuovo messaggio personalizzato. |
<AssignVariable> |
Facoltativo | Assegna un valore a una variabile di flusso. Se la variabile non esiste,
<AssignVariable> lo creerà. |
<IgnoreUnresolvedVariables> |
Facoltativo | Determina se l'elaborazione si interrompe quando viene rilevata una variabile non risolta. |
Ciascuno di questi elementi secondari viene descritto nelle sezioni seguenti.
Esempi
Gli esempi seguenti mostrano alcuni dei modi in cui puoi utilizzare il criterioAssignMessage norme:
1: Aggiungi intestazione
Nell'esempio seguente viene aggiunta un'intestazione alla richiesta con
Elemento <Add>
:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
2: Rimuovi payload
Nell'esempio seguente viene eliminato il payload dalla risposta con <Remove>
:
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
3: Modifica la risposta
Nell'esempio seguente, modifica un oggetto risposta esistente aggiungendo un'intestazione:
<AssignMessage name="modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" type="response"></AssignTo> </AssignMessage>
Questo esempio non crea un nuovo messaggio. Al contrario, modifica un messaggio di risposta esistente aggiungendo un'intestazione HTTP.
Perché in questo esempio viene omesso un nome di variabile nell'elemento <AssignTo>
e specifica
type
come "risposta", questo criterio modifica l'oggetto risposta restituito dalla destinazione
o server web.
L'intestazione HTTP aggiunta al messaggio di risposta da questo criterio deriva da una variabile compilata dal criterio LookupCache. Di conseguenza, il messaggio di risposta modificato Il criterio Assegna messaggio 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.
4. Impostazione dei contenuti dinamici
Puoi utilizzare Assegna messaggio per incorporare contenuti dinamici nel payload della risposta e di richiesta dei messaggi.
Per incorporare le variabili di flusso perimetrale in un payload XML, aggrega la variabile designata in caratteri curly
parentesi graffe, in questo modo: {prefix.name}
.
Nell'esempio seguente è incorporato il valore della variabile del flusso dell'intestazione HTTP user-agent
in un elemento XML denominato User-agent
:
<AssignMessage name="set-dynamic-content"> <AssignTo createNew="false" type="response"></AssignTo> <Set> <Payload contentType="text/xml"> <User-agent>{request.header.user-agent}</User-agent> </Payload> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
Per i payload JSON, puoi inserire le variabili utilizzando variablePrefix
e
Attributi variableSuffix
con caratteri di delimitazione, come mostrato di seguito
esempio:
<AssignMessage name="set-payload"> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> { "user-agent": "@request.header.user-agent#" } </Payload> </AssignMessage>
Per un elenco completo delle variabili di flusso, consulta Riferimento per le variabili di flusso.
A partire dalla release 16.08.17 di Cloud, è possibile utilizzare anche parentesi graffe per inserire variabili.
5. Rimozione del parametro di query
L'esempio seguente rimuove il parametro di query apikey
dalla richiesta:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
È consigliabile rimuovere il parametro di query apikey
dalla richiesta
quando utilizzi il criterio VerifyAPIKey per l'autenticazione utente. Lo scopo è evitare
che informazioni chiave sensibili vengano passate alla destinazione del backend.
6. Imposta/Ottieni le variabili
L'esempio seguente utilizza tre criteri Assegna messaggio:
- Crea tre variabili di flusso nella richiesta, con valori statici
- Ottiene le variabili di flusso in modo dinamico in un secondo criterio nel flusso di richiesta
- Le imposta nel payload della risposta
<!-- Policy #1: Set variables in the request --> <AssignMessage continueOnError="false" enabled="true" name="set-variables"> <!-- Create a variable named myAppSecret --> <AssignVariable> <Name>myAppSecret</Name> <Value>42</Value> </AssignVariable> <!-- Create a variable named config.environment --> <AssignVariable> <Name>config.environment</Name> <Value>test</Value> </AssignVariable> <!-- Create a variable named config.protocol --> <AssignVariable> <Name>config.protocol</Name> <Value>gopher</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Nel primo criterio, l'elemento <AssignVariable>
crea e imposta tre
variabili nella richiesta. Ogni elemento <Name>
specifica
un nome per la variabile e <Value>
specifica il valore.
Il secondo criterio utilizza l'elemento <AssignVariable>
per leggere i valori e crea tre
nuove variabili:
<!-- Policy #2: Get variables from the request --> <AssignMessage continueOnError="false" enabled="true" name="get-variables"> <AssignTo createNew="false" transport="http" type="request"/> <!-- Get the value of myAppSecret and create a new variable, secret --> <AssignVariable> <Name>secret</Name> <Ref>myAppSecret</Ref> <Value>0</Value> </AssignVariable> <!-- Get the value of config.environment and create a new variable, environment --> <AssignVariable> <Name>environment</Name> <Ref>config.environment</Ref> <Value>default</Value> </AssignVariable> <!-- Get the value of config.protocol and create a new variable, protocol --> <AssignVariable> <Name>protocol</Name> <Ref>config.protocol</Ref> <Value>default</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
Nel secondo criterio, l'elemento <Ref>
fa riferimento alla variabile di origine,
e <Name>
specificano i nomi delle nuove variabili. Se la variabile
a cui fa riferimento l'elemento <Ref>
non è accessibile, puoi utilizzare il valore
specificato dall'elemento <Value>
.
Per provare questo insieme di criteri:
- Aggiungi i criteri 1 e 2 al flusso di richiesta. Assicurati di inserire il criterio n. 1 prima del criterio 2.
- Aggiungi il terzo criterio nel flusso di risposta.
- Il terzo criterio utilizza l'elemento
<Set>
per aggiungere le variabili alla risposta. La L'esempio seguente crea un payload XML nella risposta che Edge restituisce al client:<!-- Policy #3: Add variables to the response --> <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload"> <DisplayName>put-em-in-the-payload</DisplayName> <Set> <Payload contentType="application/xml"> <wrapper> <secret>{secret}</secret> <config> <environment>{environment}</environment> <protocol>{protocol}</protocol> </config> </wrapper> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Tieni presente che la sintassi per accedere alle variabili di flusso in
<Set>
consiste nel includerle nel parentesi graffe.Assicurati di impostare l'attributo
contentType
dell'elemento<Payload>
su "application/xml". - Inviare una richiesta al proxy API; Ad esempio:
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
Facoltativamente, puoi indirizzare i risultati tramite un'utilità come
xmllint
, in modo che l'XML sia visualizzato con una struttura formattata correttamente:curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
Il corpo della risposta dovrebbe avere il seguente aspetto:
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>
7: recupera le intestazioni delle risposte dei callout del servizio
Nell'esempio seguente, supponiamo che nella richiesta proxy API sia presente un criterio ServiceCallout,
e la risposta al callout contiene più intestazioni con lo stesso nome.
(Set-Cookie
). Supponendo che la variabile di risposta del callout di servizio sia l'impostazione predefinita
calloutResponse
, il seguente criterio riceve il secondo Set-Cookie
dell'intestazione.
<AssignMessage continueOnError="false" enabled="true" name="get-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Per elencare tutti i valori dell'intestazione, utilizza la seguente variabile:
{calloutResponse.header.Set-Cookie.values}
Ogni elemento secondario di questo riferimento ha esempi aggiuntivi. Per ulteriori esempi, vedi Esempio diAssignMessage su GitHub.
Riferimento elemento secondario
In questa sezione vengono descritti gli elementi secondari di <AssignMessage>
.
<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 modificare i valori delle proprietà esistenti, utilizza <Set>
.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<AssignMessage>
|
Elementi secondari |
<FormParams> <Headers> <QueryParams> |
L'elemento <Add>
utilizza la seguente sintassi:
Sintassi
<AssignMessage 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> </AssignMessage>
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:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
Esempio 2
Nell'esempio seguente viene utilizzato l'elemento <Headers>
per aggiungere il parametro
User-Agent
alla richiesta dell'endpoint di destinazione:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Esempio 3
L'esempio seguente utilizza l'elemento <QueryParams>
per aggiungere una singola query
con un valore statico alla richiesta:
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Questo esempio utilizza <Add>
nel pre-flusso della richiesta. Se osservi i risultati in uno strumento
come lo strumento Tracce, la richiesta a "http://httpbin.org/get" diventa
"http://httpbin.org/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 una risposta .
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Array di <FormParam> elementi |
Elemento principale |
<Add>
|
Elementi secondari |
<FormParam> |
L'elemento <FormParams>
utilizza la seguente sintassi:
Sintassi
<AssignMessage 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> </AssignMessage>
Esempio 1
L'esempio seguente aggiunge un singolo parametro di modulo ("answer") e un valore statico ("42") a la richiesta:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"></AssignTo> </AssignMessage>
Esempio 2
L'esempio seguente restituisce il valore del parametro della stringa di query name
e
lo aggiunge alla richiesta come parametro del modulo:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
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:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
Questo esempio ottiene i parametri della stringa di query dalla richiesta di origine e li aggiunge come parametri del modulo per la richiesta inviata all'endpoint di destinazione.
Puoi utilizzare lo strumento Traccia per esaminare 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:
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
Puoi utilizzare <FormParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP: POST
- Tipo di messaggio: richiesta
- Uno (o entrambi) dei seguenti elementi:
- Dati del modulo: puoi impostare un valore specifico oppure "" (la stringa vuota). Ad esempio, con
curl
, aggiungi-d ""
alla tua richiesta. - Intestazione
Content-Length
: impostata su 0 (se non sono presenti dati nell'intestazione richiesta originale; altrimenti la lunghezza attuale, in byte). Ad esempio, concurl
aggiungi-H "Content-Length: 0"
alla tua richiesta.
- Dati del modulo: puoi impostare un valore specifico oppure "" (la stringa vuota). Ad esempio, con
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>
, Edge 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 alla risposta specificate, specificate dal
Elemento <AssignTo>
.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Array di <Header> elementi |
Elemento principale |
<Add>
|
Elementi secondari |
<Header> |
L'elemento <Headers>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
Esempio 1
Nell'esempio seguente viene aggiunta l'intestazione user-agent
al messaggio di richiesta e
assegna il valore della variabile di flusso request.user.agent
a quell'intestazione.
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(secondario 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 <QueryParam> elementi |
Elemento principale |
<Add>
|
Elementi secondari |
<QueryParam> |
L'elemento <QueryParams>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
Esempio 1
Nell'esempio seguente viene aggiunto il parametro di query "myParam" alla richiesta e assegna il valore "42" al suo interno:
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Puoi utilizzare <QueryParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP: GET
- Tipo di messaggio: richiesta
Inoltre, puoi impostare parametri di ricerca solo quando l'elemento <AssignTo>
L'attributo type
è un messaggio di richiesta. L'impostazione nella risposta non ha alcun effetto.
Se nel criterio viene definito un array vuoto di parametri di query
(<Add><QueryParams/></Add>
), il criterio non aggiunge alcuna query
parametri. Equivale all'omissione di <QueryParams>
.
<AssignTo>
Determina su quale oggetto opera il criterioAssignMessage. Le opzioni sono:
- Messaggio di richiesta: il
request
ricevuto dal proxy API. - Messaggio di risposta: il
response
restituito dal server di destinazione. - Messaggio personalizzato: un oggetto richiesta o risposta personalizzato.
Tieni presente che, in alcuni casi, non è possibile modificare l'oggetto su cui agisce il criterioAssignMessage.
Ad esempio, non puoi utilizzare <Add>
o <Set>
per aggiungere o modificare i parametri di query
(<QueryParams>
) o parametri del modulo (<FormParams>
) nella risposta. Puoi solo
modificare parametri di ricerca e i parametri del modulo nella richiesta.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<AssignMessage>
|
Elementi secondari | Nessuno |
Se non specifichi <AssignTo>
, 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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </AssignMessage>
Esempio 1
Nell'esempio seguente viene specificato che la destinazione è la richiesta originale che verrà inviata all'utente endpoint di destinazione:
<AssignMessage name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Se imposti createNew
su "false" (valore predefinito), questo esempio non crea un
una nuova richiesta. Tutte le operazioni in questo criterio influiscono sulla richiesta originale.
Esempio 2
Nell'esempio seguente viene creato un nuovo oggetto di richiesta:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Quando crei un nuovo oggetto di richiesta o risposta, gli altri elementi del criterioAssignMessage
(ad esempio <Add>
, <Set>
e <Set>
) agiscono in base al nuovo
di richiesta di addestramento.
Puoi accedere al nuovo oggetto di richiesta in altri criteri in un secondo momento nel flusso oppure inviare il nuovo oggetto a un servizio esterno con un criterio ServiceCallout.
Esempio 3
Nell'esempio seguente viene creato un nuovo oggetto di richiesta denominato "MyRequestObject":
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> </AssignMessage>
Quando crei un nuovo oggetto di richiesta o risposta, gli altri elementi del criterioAssignMessage
(ad esempio <Add>
, <Set>
e <Set>
) agiscono in base al nuovo
di richiesta di addestramento.
Puoi accedere al nuovo oggetto di richiesta in altri criteri in un secondo momento nel flusso oppure inviare il nuovo oggetto a un servizio esterno con un criterio ServiceCallout.
Nella tabella seguente vengono descritti gli attributi di <AssignTo>
:
Attributo | Descrizione | Obbligatorio? | Tipo |
---|---|---|---|
createNew |
Consente di stabilire se questo criterio crea un nuovo messaggio durante l'assegnazione di valori. Se il valore è "true", il criterio crea una nuova variabile di tipo
specificato da Se il valore è "false", il criterio risponde in uno dei due modi seguenti:
Se
|
Facoltativo | Booleano |
transport |
Specifica il tipo di trasporto per il tipo di messaggio di richiesta o risposta. Il valore predefinito è "http" (l'unico valore supportato). |
Facoltativo | Stringa |
type |
Specifica il tipo del nuovo messaggio, quando createNew è "true". Valido
i valori sono "request" o "risposta".
Il valore predefinito è "request". Se ometti questo attributo, Edge crea una richiesta o una risposta, a seconda del punto del flusso in cui viene eseguito questo criterio. |
Facoltativo | Stringa |
<AssignVariable>
Assegna un valore a una variabile del flusso di destinazione (ad es. una variabile il cui valore è impostato dal
Allocazione di Messaggi). Se la variabile di flusso non esiste, <AssignVariable>
crea
li annotino.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<AssignMessage>
|
Elementi secondari |
<Name> (obbligatorio)<Ref> <Template> <Value> |
Il valore assegnato alla variabile del flusso di destinazione può essere uno dei seguenti:
- Stringa letterale: utilizza l'elemento secondario
<Value>
per specificare un valore letterale. valore della stringa per la variabile del flusso di destinazione. - Variabile di flusso: utilizza l'elemento secondario
<Ref>
per specificare il valore di un esistente per la variabile di flusso di destinazione. Per un elenco completo dei passaggi che possono essere utilizzate come origine, consulta Informazioni sulle variabili di flusso. - Modello di messaggio: utilizza l'elemento secondario
<Template>
per specificare un modello di messaggio per del flusso di destinazione.
L'elemento <AssignVariable>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
Utilizza l'elemento <Ref>
per specificare la variabile di origine. Se
la variabile a cui fa riferimento <Ref>
non è accessibile, Edge utilizza il valore
specificato dall'elemento <Value>
. Se definisci
<Template>
, ha la precedenza sugli altri elementi secondari.
Esempio 1
L'esempio seguente imposta il valore di una nuova variabile, myvar
, sul valore letterale
valore "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Esempio 2
Nell'esempio seguente viene assegnato il valore della variabile di flusso
request.header.user-agent
alla variabile del flusso di destinazione myvar
e il valore del parametro di query country
alla variabile del flusso di destinazione
Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
Se una delle assegnazioni non riesce, Edge assegna invece il valore "ErrorOnCopy". a la variabile del flusso di destinazione.
Se le variabili di flusso myvar
o Country
non esistono,
<AssignVariable>
li crea.
Esempio 3
L'esempio seguente utilizza l'attributo <Template>
elemento figlio per concatenare due variabili di contesto
con una stringa letterale (un trattino) tra di loro:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Un uso comune di <AssignVariable>
è l'impostazione di un valore predefinito per un parametro di query, un'intestazione o
l'altro valore che può essere passato con la richiesta. Per farlo puoi utilizzare una combinazione di entrambe
Elementi secondari <Ref>
e <Value>
. Per ulteriori informazioni
informazioni, vedi gli esempi per <Ref>
.
<Name>
(secondario di <AssignVariable>
)
Specifica il nome della variabile del flusso di destinazione (ad es. la variabile il cui valore è impostato da
il criterioAssignMessage). Se la variabile denominata in <AssignVariable>
non esiste, la variabile
criterio ne crea uno con quel nome.
Valore predefinito | n/d |
Obbligatorio? | Obbligatorio |
Tipo | Stringa |
Elemento principale |
<AssignVariable>
|
Elementi secondari | Nessuno |
L'elemento <Name>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> </AssignVariable> </AssignMessage>
Esempio 1
Nell'esempio seguente viene specificata la variabile di destinazione myvar
e la imposta
al valore letterale "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Se myvar
non esiste, <AssignVariable>
lo crea.
<Ref>
(secondario di <AssignVariable>
)
Specifica l'origine dell'assegnazione come variabile di flusso. La variabile di flusso può essere una delle variabili di flusso predefinite (come elencate nel Riferimento alle variabili di flusso) o variabili di flusso personalizzate che hai creato.
Il valore di <Ref>
viene sempre interpretato come variabile di flusso; non puoi
specifica una stringa letterale come
valore. Per assegnare un valore letterale di stringa, utilizza l'elemento <Value>
.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<AssignVariable>
|
Elementi secondari | Nessuno |
Quando specifichi una variabile di flusso con <Ref>
, ometti la macro
che includono parentesi "{}" che useresti normalmente per fare riferimento a una variabile di flusso. Ad esempio:
per impostare il valore della nuova variabile sul valore del flusso client.host
variabile:
Do this (no brackets): <Ref>client.host</Ref> Do NOT do this (brackets): <Ref>{client.host}</Ref>
Per definire un valore predefinito per la variabile del flusso di destinazione, utilizza <Value>
in combinazione con <Ref>
. Se la variabile di flusso specificata da
<Ref>
non esiste, non può essere letto o è nullo, Edge assegna il valore
di <Value>
alla variabile del flusso di destinazione.
L'elemento <Ref>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> </AssignVariable> </AssignMessage>
Esempio 1
Nell'esempio seguente viene assegnato il valore della variabile di flusso
request.header.user-agent
alla variabile del flusso di destinazione myvar
e
il valore del parametro di query country
nella variabile Country
:
<AssignMessage name="assignvariable-4"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> </AssignMessage>
In questo esempio, per Edge non è specificato un valore predefinito (o di riserva) per compito.
Esempio 2
Nell'esempio seguente viene assegnato il valore della variabile di flusso request.header.user-agent
alla variabile del flusso di destinazione myvar
e il valore
del parametro di query country
alla variabile Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
In questo esempio, se i valori della variabile di flusso request.header.user-agent
o il parametro di query Country
è nullo, illeggibile o con un formato non corretto, Edge assegna
il valore "ErrorOnCopy" alle nuove variabili.
Esempio 3
Un caso d'uso comune di <AssignVariable>
è l'impostazione del valore predefinito di una query
parametro, intestazione o altro valore che può essere trasmesso con la richiesta. Ad esempio, crei
un proxy API meteo in cui la richiesta accetta un singolo parametro di query denominato "w". Questo
contiene l'ID della città di cui si desidera il meteo. L'URL della richiesta contiene
il modulo:
http://myCO.com/v1/weather/forecastrss?w=city_ID
Per definire un valore predefinito per "w", crea un criterioAssignMessage come seguenti:
<AssignMessage continueOnError="false" enabled="true" name="assignvariable-3"> <AssignTo createNew="false" transport="http" type="request"/> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignVariable> <Name>request.queryparam.w</Name> <Ref>request.queryparam.w</Ref> <Value>12797282</Value> </AssignVariable> </AssignMessage>
In questo esempio, <AssignVariable>
ottiene il valore di request.queryparam.w
e lo assegna a se stesso. Se la variabile di flusso è nulla, significa che "w" il parametro di ricerca era
omesso dalla richiesta, in questo esempio viene utilizzato il valore predefinito
Elemento <Value>
. Pertanto, puoi effettuare una richiesta a questa API
che omette la lettera "w" parametro di query:
http://myCO.com/v1/weather/forecastrss
...e fare in modo che il proxy API restituisca un risultato valido.
A differenza di quando utilizzi <Value>
, il valore di <Ref>
deve essere un
di flusso, ad esempio una proprietà di una request
, response
oppure
target
. Il valore può anche essere una variabile di flusso personalizzata che hai creato.
Se specifichi una variabile di flusso che non esiste per il valore <Ref>
,
e il valore di <IgnoreUnresolvedVariables>
è "true", Edge genera un errore.
<Template>
(secondario di <AssignVariable>
)
Specifica un valore modello di messaggio. Un messaggio consente di eseguire la sostituzione di stringhe di variabili quando il criterio viene eseguito, e può combinare stringhe letterali con nomi di variabili racchiusi in caratteri parentesi graffe. Inoltre, i modelli di messaggio assistenza funzioni come escape e conversione di maiuscole e minuscole.
Utilizza l'attributo ref
per specificare una variabile di flusso in cui il valore della variabile
è un modello di messaggio. Ad esempio, puoi archiviare un modello di messaggio come
attributo personalizzato
per un'app per sviluppatori. Quando Edge identifica l'app sviluppatore dopo aver verificato la chiave API
o token di sicurezza (tramite un criterio aggiuntivo), <AssignVariable>
può utilizzare il modello di messaggio dell'attributo personalizzato dell'app, disponibile
come variabile di flusso dal criterio di sicurezza. L'esempio seguente presuppone che il messaggio
il modello è disponibile in un attributo cliente chiamato message_template
nella
app sviluppatore che effettua la chiamata API, in cui è stato usato il criterioVerifyAPIKey per la verifica
chiave API dell'app:
<AssignVariable ref='verifyapikey.myVerifyAPIKeyPolicy.app.name.message_template'/>
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<AssignVariable>
|
Elementi secondari | Nessuno |
L'elemento <Template>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Template>message_template</Template> or <Template ref='template_variable'></Template> </AssignVariable> </AssignMessage>
Esempio 1
L'esempio seguente utilizza la sintassi dei modelli dei messaggi per concatenare due variabili di contesto con una stringa letterale (un trattino) tra di loro:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Esempio 2
L'esempio seguente specifica una variabile di flusso in cui il valore della variabile è un modello di messaggio predefinito. Utilizza questa opzione se desideri inserire un modello predefinito senza dover modificare il criterio:
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_template_variable'/> </AssignVariable> </AssignMessage>
Esempio 3
L'esempio seguente specifica una variabile di flusso e un valore di testo. In questo caso, se
la variabile di riferimento è diversa da null, questo valore viene utilizzato come modello. Se l'oggetto
è null, il valore di testo (in questo caso, {system.uuid}-{messageid}
)
viene utilizzato come modello. Questo pattern è utile per fornire una "sostituzione" valore, dove
in alcuni casi vuoi sostituire il modello predefinito (la parte di testo) con valori
impostati in modo dinamico. Ad esempio, un'istruzione condizionale potrebbe acquisire un valore
da una mappa chiave-valore e imposta la variabile di riferimento su quel valore:
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_variable'>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
<Value>
(secondario di <AssignVariable>
)
Definisce il valore della variabile del flusso di destinazione impostata con <AssignVariable>
. La
value è sempre interpretato come una stringa letterale; non puoi usare una variabile di flusso come valore,
se racchiudi il valore tra parentesi ("{}"). Per utilizzare una variabile di flusso, utilizza <Ref>
.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<AssignVariable>
|
Elementi secondari | Nessuno |
Se utilizzato in combinazione con l'elemento <Ref>
, <Value>
funge da valore predefinito (o di riserva). Se <Ref>
non è specificato, viene
non risolvibile oppure null, viene utilizzato il valore di <Value>
.
L'elemento <Value>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
Esempio 1
L'esempio seguente imposta il valore della variabile del flusso di destinazione myvar
al valore letterale "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Esempio 2
Nell'esempio seguente viene assegnato il valore della variabile di flusso
request.header.user-agent
alla variabile di flusso myvar
e il valore
del parametro di query country
alla variabile Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
Se una delle assegnazioni non riesce, <AssignVariable>
assegna invece il valore "ErrorOnCopy" a
la variabile del flusso di destinazione.
<Copy>
Copia i valori dal messaggio specificato dall'attributo source
al messaggio specificato dall'elemento <AssignTo>
. Se non specifichi
un target con <AssignTo>
, questo criterio copia i valori nella richiesta o nella risposta
a seconda della fase del flusso
in cui viene eseguito questo criterio.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<AssignMessage>
|
Elementi secondari |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
L'elemento <Copy>
utilizza la seguente sintassi:
Sintassi
<AssignMessage
continueOnError="[false|true]"
enabled="[true|false]"
name="policy_name" >
<Copy source="[request|response]">
<!-- Can also be an empty array (<FormParams/>) -->
<FormParams>
<FormParam name="formparam_name">formparam_value</FormParam>
...
</FormParams>
<!-- Can also be an empty array (<Headers/>) -->
<Headers>
<Header name="header_name">header_value</Header>
...
</Headers>
<Path>[false|true]</Path>
<Payload>[false|true]</Payload>
<!-- Can also be an empty array (<QueryParams/>) -->
<QueryParams>
<QueryParam name="queryparam_name">queryparam_value</QueryParam>
...
</QueryParams>
<ReasonPhrase>[false|true]</ReasonPhrase>
<StatusCode>[false|true]</StatusCode>
<Verb>[false|true]</Verb>
<Version>[false|true]</Version>
</Copy>
<!-- Used as the destination for the <Copy>
values -->
<AssignTo createNew="[true|false]" transport="http"
type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>
Esempio 1
L'esempio seguente copia un'intestazione, tre parametri del modulo, il percorso e tutte le query parametri dalla richiesta a una nuova richiesta personalizzata:
<AssignMessage continueOnError="false" enabled="true" name="copy-1"> <Copy source="request"> <Headers> <Header name="Header_Name_1">Header value 1</Header> </Headers> <FormParams> <FormParam name="Form_Param_Name_1">Form param value 1</FormParam> <FormParam name="Form_Param_Name_2">Form param value 1</FormParam> <FormParam name="Form_Param_Name_3">Form param value 1</FormParam> </FormParams> <Payload>false</Payload> <Path>true</Path> <QueryParams/> <ReasonPhrase>false</ReasonPhrase> <StatusCode>false</StatusCode> <Verb>false</Verb> <Version>false</Version> </Copy> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
L'elemento <Copy>
ha i seguenti attributi:
Attributo | Descrizione | Obbligatorio? | Tipo |
---|---|---|---|
origine |
Specifica l'oggetto di origine della copia.
|
Facoltativo | Stringa |
<FormParams>
(secondario di <Copy>
)
Copia i parametri del modulo della richiesta specificata dal
Attributo source
dell'elemento <Copy>
alla richiesta
specificato dall'elemento <AssignTo>
. 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 |
<Copy>
|
Elementi secondari |
<FormParam> |
L'elemento <FormParams>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente copia un singolo parametro del modulo dalla richiesta al richiesta personalizzata "MyCustomRequest":
<AssignMessage name="copy-formparams-1"> <Copy source="request"> <FormParams> <FormParam name="paramName">Form param value 1</FormParam> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Esempio 2
L'esempio seguente copia tutti i parametri del modulo nella richiesta personalizzata "MyCustomRequest":
<AssignMessage name="copy-formparams-2"> <Copy source="request"> <FormParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Esempio 3
L'esempio seguente copia tre parametri del modulo nella richiesta personalizzata "MyCustomRequest":
<AssignMessage name="copy-formparams-3"> <Copy source="request"> <FormParams> <FormParam name="paramName1"/> <FormParam name="paramName2"/> <FormParam name="paramName3"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Esempio 4
Se esistono più parametri del modulo con lo stesso nome, utilizza la seguente sintassi:
<AssignMessage name="copy-formparams-4"> <Copy source="request"> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
In questo esempio vengono copiati "f1", "f2" e il secondo valore di "f3". Se "f3" ha un solo non viene copiato.
Puoi utilizzare <FormParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP: POST
- Tipo di messaggio: risposta
- Uno (o entrambi) dei seguenti elementi:
- Dati del modulo: puoi impostare un valore specifico oppure "" (la stringa vuota). Ad esempio, con
curl
, aggiungi-d ""
alla tua richiesta. - Intestazione
Content-Length
: impostata su 0 (se non sono presenti dati nell'intestazione richiesta originale; altrimenti la lunghezza attuale. Ad esempio, concurl
aggiungi-H "Content-Length: 0"
alla tua richiesta.
- Dati del modulo: puoi impostare un valore specifico oppure "" (la stringa vuota). Ad esempio, con
Quando copi <FormParams>
, <Copy>
imposta il valore Content-Type
del messaggio su
"application/x-www-form-urlencoded" prima di inviare il messaggio al servizio di destinazione.
<Headers>
(secondario di <Copy>
)
Copia le intestazioni HTTP dal messaggio di richiesta o risposta specificato da
Attributo source
dell'elemento <Copy>
alla richiesta
o un messaggio di risposta specificato dall'elemento <AssignTo>
.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Un array di elementi <Header> o un array vuoto |
Elemento principale |
<Copy>
|
Elementi secondari |
<Header> |
L'elemento <Headers>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente copia l'intestazione user-agent
dalla richiesta al
nuovo oggetto di richiesta personalizzato:
<AssignMessage name="copy-headers-1"> <Copy source="request"> <Headers> <Header name="user-agent"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Esempio 2
Per copiare tutte le intestazioni, utilizza un elemento <Headers>
vuoto, come nell'esempio seguente
mostra:
<AssignMessage name="copy-headers-2"> <Copy source="request"> <Headers/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Esempio 3
Se esistono più intestazioni con lo stesso nome, utilizza la seguente sintassi:
<AssignMessage name="copy-headers-3"> <Copy source="request"> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
In questo esempio vengono copiati "h1", "h2" e il secondo valore di "h3". Se "h3" ha un solo non viene copiato.
<Path>
(secondario di <Copy>
)
Determina se il percorso deve essere copiato dalla richiesta di origine alla destinazione richiesta. Questo elemento non ha alcun effetto su una risposta.
Se il valore è "true", questo criterio copia il percorso dal messaggio di richiesta specificato
Attributo source
dell'elemento <Copy>
alla richiesta
messaggio specificato dall'elemento <AssignTo>
.
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<Copy>
|
Elementi secondari | Nessuno |
L'elemento <Path>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Path>[false|true]</Path> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente indica che il criterioAssignMessage deve copiare il percorso dall'origine al nuovo oggetto di richiesta personalizzato:
<AssignMessage name="copy-path-1"> <Copy source="request"> <Path>true</Path> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Puoi utilizzare <Path>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
<Payload>
(secondario di <Copy>
)
Determina se il payload deve essere copiato dall'origine alla destinazione. L'origine e la destinazione possono essere richieste o risposte.
Se "true", questo criterio copia il payload dal messaggio specificato
Attributo source
dell'elemento <Copy>
al messaggio
specificato dall'elemento <AssignTo>
.
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<Copy>
|
Elementi secondari | Nessuno |
L'elemento <Payload>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Payload>[false|true]</Payload> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente imposta <Payload>
su "true" in modo che il payload della richiesta
copiato dalla richiesta alla risposta:
<AssignMessage name="copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<QueryParams>
(secondario di <Copy>
)
Copia i parametri della stringa di query dalla richiesta specificata dalla
Attributo source
dell'elemento <Copy>
alla richiesta specificata
dall'elemento <AssignTo>
. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Un array di elementi <QueryParam> o un array vuoto |
Elemento principale |
<QueryParam>
|
Elementi secondari | Nessuno |
L'elemento <QueryParams>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Copy> </AssignMessage>
Esempio 1
Il seguente esempio copia il parametro "my_param" parametro di query dalla richiesta a un nuovo, oggetto di richiesta personalizzata:
<AssignMessage name="copy-queryparams-1"> <Copy source="request"> <QueryParams> <QueryParam name="my_param"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Esempio 2
L'esempio seguente copia tutti parametri di ricerca dalla richiesta in una nuova Oggetto richiesta:
<AssignMessage name="copy-queryparams-2"> <Copy source="request"> <QueryParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Esempio 3
Se esistono più parametri di query con lo stesso nome, utilizza la seguente sintassi:
<AssignMessage name="copy-queryparams-3"> <Copy source="request"> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
In questo esempio vengono copiati "qp1", "qp2" e il secondo valore di "qp3". Se "qp3" ha solo valore, non viene copiato.
Puoi utilizzare <QueryParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP: GET
- Tipo di messaggio: richiesta
<ReasonPhrase>
(secondario di <Copy>
)
determina se la frase di motivazione deve essere copiata dalla risposta di origine alla la risposta della destinazione. Questo elemento non ha alcun effetto su una richiesta.
Se il valore è "true", questo criterio copia il valore ReasonPhrase
dalla risposta
specificato dall'attributo source
dell'elemento <Copy>
alla risposta
specificato dall'elemento <AssignTo>
.
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<Copy>
|
Elementi secondari | Nessuno |
L'elemento <ReasonPhrase>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <ReasonPhrase>[false|true]</ReasonPhrase> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente imposta <ReasonPhrase>
su "true", il che fa sì che <Copy>
per copiare la frase del motivo dalla risposta predefinita a un oggetto risposta personalizzata:
<AssignMessage name="copy-reasonphrase-1"> <Copy source="response"> <ReasonPhrase>true</ReasonPhrase> </Copy> <AssignTo createNew="trie" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Puoi utilizzare <ReasonPhrase>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: risposta
<StatusCode>
(secondario di <Copy>
)
Determina se il codice di stato viene copiato dalla risposta di origine alla destinazione la risposta corretta. Questo elemento non ha alcun effetto su una richiesta.
Se "true", questo criterio copia il codice di stato dal messaggio di risposta specificato da
Attributo source
dell'elemento <Copy>
alla risposta
messaggio specificato dall'elemento <AssignTo>
.
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<Copy>
|
Elementi secondari | Nessuno |
L'elemento <StatusCode>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <StatusCode>[false|true]</StatusCode> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente imposta <StatusCode>
su "true", che copia il codice di stato
dall'oggetto risposta predefinito a un nuovo oggetto risposta personalizzata:
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Puoi utilizzare <StatusCode>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: risposta
Un uso comune di <StatusCode>
è per garantire che la risposta proxy abbia lo stesso stato
come risposta ricevuta dal target quando createNew
di <AssignTo>
sia impostato su "true".
<Verb>
(secondario di <Copy>
)
Determina se il verbo HTTP viene copiato dalla richiesta di origine alla destinazione richiesta. Questo elemento non ha alcun effetto su una risposta.
Se "true", copia il verbo trovato nell'attributo source
dell'elemento <Copy>
alla richiesta specificata nell'elemento <AssignTo>
.
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<Copy>
|
Elementi secondari | Nessuno |
L'elemento <Verb>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Verb>[false|true]</Verb> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente imposta <Verb>
su "true", che copia il verbo dal
predefinita a una nuova richiesta personalizzata:
<AssignMessage name="copy-verb-1"> <Copy source="request"> <Verb>true</Verb> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Puoi utilizzare <Verb>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
<Version>
(secondario di <Copy>
)
determina se la versione HTTP viene copiata dalla richiesta di origine alla richiesta di destinazione. Questo elemento non ha alcun effetto su una risposta.
Se "true", copia la versione HTTP trovata nell'attributo source
dell'elemento <Copy>
all'oggetto specificato dall'elemento <AssignTo>
.
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<Copy>
|
Elementi secondari | Nessuno |
L'elemento <Version>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Version>[false|true]</Version> </Copy> </AssignMessage>
Esempio 1
L'esempio seguente imposta <Version>
su "true" sulla richiesta, che copia
versione dall'oggetto di richiesta predefinito a un nuovo oggetto di richiesta personalizzato:
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Puoi utilizzare <Version>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
<DisplayName>
Da utilizzare in aggiunta all'attributo name
per etichettare il criterio in
editor proxy UI 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> , il valore del valore
viene utilizzato l'attributo name del criterio |
Tipo | Stringa |
Elemento principale | <PolicyElement> |
Elementi secondari | Nessuno |
L'elemento <DisplayName>
utilizza la seguente sintassi:
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 |
<AssignMessage>
|
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 del
Da continueOnError
a true
di <AssignMessage>
in quanto è specifico per
l'impostazione e il recupero
dei valori delle variabili. Se imposti continueOnError
su
true
, Edge ignora tutti gli errori, non solo quelli riscontrati durante l'utilizzo
come la codifica one-hot
delle variabili categoriche.
L'elemento <IgnoreUnresolvedVariables>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </AssignMessage>
Esempio 1
L'esempio seguente imposta <IgnoreUnresolvedVariables>
su "true":
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
Rimuove intestazioni, parametri di ricerca, parametri del modulo e/o il payload dei messaggi da
un messaggio. Il messaggio 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 |
<AssignMessage>
|
Elementi secondari |
<FormParams> <Headers> <Payload> <QueryParams> |
Un caso d'uso comune di <Remove>
è l'eliminazione di un parametro di query che contiene dati
dall'oggetto della richiesta in entrata, per evitare di passarlo al server di backend.
L'elemento <Remove>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
Esempio 1
L'esempio seguente rimuove il corpo del messaggio dalla risposta:
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Nel flusso di risposta, questo criterio rimuove il corpo della risposta, restituendo solo HTTP al client.
Esempio 2
L'esempio seguente rimuove tutti i parametri del modulo e un parametro di query dalla richiesta:
<AssignMessage continueOnError="false" enabled="true" name="remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<FormParams>
(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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Remove> </AssignMessage>
Esempio 1
L'esempio seguente rimuove tre parametri del modulo dalla richiesta:
<AssignMessage name="remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Esempio 2
L'esempio seguente rimuove tutti i parametri del modulo dalla richiesta:
<AssignMessage name="remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Esempio 3
Se esistono più parametri del modulo con lo stesso nome, utilizza la seguente sintassi:
<AssignMessage name="remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Questo esempio rimuove "f1", "f2" e il secondo valore di "f3". Se "f3" ha un solo non viene rimosso.
Puoi utilizzare <FormParams>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
Content-Type
: "application/x-www-form-urlcoded"
<Headers>
(secondario di <Remove>
)
Rimuove le intestazioni HTTP specificate dalla richiesta o dalla risposta, specificate dal
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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Remove> </AssignMessage>
Esempio 1
L'esempio seguente rimuove l'intestazione user-agent
dalla richiesta:
<AssignMessage name="remove-headers-1"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Esempio 2
L'esempio seguente rimuove tutte le intestazioni dalla richiesta:
<AssignMessage name="remove-headers-2"> <Remove> <Headers/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Esempio 3
Se esistono più intestazioni con lo stesso nome, utilizza la seguente sintassi:
<AssignMessage name="remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Questo esempio rimuove "h1", "h2" e il secondo valore di "h3" dalla richiesta. Se "h3" ha un solo valore, non viene rimosso.
<Payload>
(secondario di <Remove>
)
Determina se <Remove>
elimina il payload nella richiesta o nella risposta, ovvero
specificato dall'elemento <AssignTo>
. Impostato su "true" a
cancellare il payload; altrimenti "false". Il valore predefinito è "false".
Valore predefinito | Falso |
Obbligatorio? | Facoltativo |
Tipo | Booleano |
Elemento principale |
<Remove>
|
Elementi secondari | Nessuno |
L'elemento <Payload>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <Payload>[false|true]</Payload> </Remove> </AssignMessage>
Esempio 1
L'esempio seguente imposta <Payload>
su "true" in modo che il payload della richiesta
cancellato:
<AssignMessage name="remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(secondario di <Remove>
)
Rimuove dalla richiesta i parametri di ricerca specificati. Questo elemento non ha alcun effetto su un la risposta corretta.
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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
Esempio 1
L'esempio seguente rimuove un singolo parametro di query dalla richiesta:
<AssignMessage name="remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Esempio 2
L'esempio seguente rimuove tutti parametri di ricerca dalla richiesta:
<AssignMessage name="remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Esempio 3
Se esistono più parametri di query con lo stesso nome, utilizza la seguente sintassi:
<AssignMessage name="remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Questo esempio rimuove "qp1", "qp2" e il secondo valore di "qp3" dalla richiesta. Se "qp3" ha un solo valore, non viene rimosso.
Esempio 4
L'esempio seguente rimuove il parametro di query apikey
dalla richiesta:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Puoi utilizzare <QueryParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP: GET
- Tipo di messaggio: richiesta
<Set>
Imposta le informazioni nel messaggio di richiesta o risposta, che è specificato dal
Elemento <AssignTo>
. <Set>
sovrascrive le intestazioni o
già esistenti nel messaggio originale. Per creare una nuova intestazione o un nuovo parametro, utilizza
l'elemento <Add>
.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Tipo complesso |
Elemento principale |
<AssignMessage>
|
Elementi secondari |
<FormParams> <Headers> <Payload> <Path> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
L'elemento <Set>
utilizza la seguente sintassi:
Sintassi
<AssignMessage 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> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Esempio 1
Nell'esempio seguente viene mostrato l'elemento <Set>
:
<AssignMessage continueOnError="false" enabled="true" name="set-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> <QueryParams> <QueryParam name="name">{request.header.name}</QueryParam> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> <!-- <Verb>GET</Verb> --> <Payload contentType="text/plain">42</Payload> <Path/> <ReasonPhrase>Bad request</ReasonPhrase> <StatusCode>400</StatusCode> <Verb>POST</Verb> <Verb>{my_variable}</Verb> <Version>1.1</Version> </Set> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
<FormParams>
(secondario di <Set>
)
Sovrascrive i parametri del modulo esistenti in una richiesta e li sostituisce con i nuovi valori impostati specifica con questo elemento. Questo elemento non ha alcun effetto su una risposta.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Array di <FormParam> elementi |
Elemento principale |
<Set>
|
Elementi secondari |
<FormParam> |
L'elemento <FormParams>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Set> </AssignMessage>
Esempio 1
Nell'esempio seguente viene impostato un parametro del modulo chiamato "myparam" al valore del parametro
Variabile request.header.myparam
in una nuova richiesta personalizzata:
<AssignMessage name="set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Puoi utilizzare <FormParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP: POST
- Tipo di messaggio: richiesta
Se nelle norme definisci parametri di modulo vuoti
(<Add><FormParams/></Add>
), il criterio non aggiunge nessun modulo
parametri. È 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>
(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> |
L'elemento <Headers>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Set> </AssignMessage>
Esempio 1
Nell'esempio seguente l'intestazione user-agent
viene impostata sul valore del valore
Variabile request.header.user-agent
:
<AssignMessage name="set-headers-1"> <Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Se definisci intestazioni vuote nel criterio
(<Add><Headers/></Add>
), il criterio non aggiunge nessuna intestazione. Questo
equivale a omettere <Headers>
.
<Path>
(secondario di <Set>
)
<Payload>
(secondario di <Set>
)
Definisce il corpo del messaggio per una richiesta o una risposta, specificato dal
Elemento <AssignTo>
. Il payload può essere qualsiasi tipo di contenuto valido, come un
testo, JSON o XML.
Valore predefinito | stringa vuota |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<Set>
|
Elementi secondari | Nessuno |
L'elemento <Payload>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> </Set> </AssignMessage>
Esempio 1
L'esempio seguente imposta un payload in testo normale:
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
Esempio 2
L'esempio seguente imposta un payload JSON:
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
Esempio 3
L'esempio seguente inserisce valori delle variabili nel payload aggregando i nomi delle variabili tra parentesi graffe:
<AssignMessage name="set-payload-3"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set> </AssignMessage>
Nelle versioni precedenti di Apigee Edge, ad esempio prima della release 16.08.17 nel cloud, era possibile
Non utilizzare parentesi graffe per indicare i riferimenti alle variabili all'interno dei payload JSON. In queste release,
è necessario utilizzare gli attributi variablePrefix
e variableSuffix
per
specificare i delimitatori e utilizzarli per aggregare i nomi delle variabili, in questo modo:
<AssignMessage name="set-payload-3b"> <Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set> </AssignMessage>
La sintassi precedente continua a funzionare.
Esempio 4
I contenuti di <Payload>
vengono trattati come un modello di messaggio. Ciò significa che
Il criterioAssignMessage sostituisce le variabili racchiuse tra parentesi graffe con il valore del parametro
a cui viene fatto riferimento in fase di runtime.
L'esempio seguente utilizza la sintassi delle parentesi graffe per impostare parte del payload su un valore della variabile:
<AssignMessage name="set-payload-4"> <Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </root> </Payload> </Set> </AssignMessage>
Nella tabella seguente vengono descritti gli attributi di <Payload>
:
Attributo | Descrizione | Presenza | Tipo |
---|---|---|---|
contentType |
Se specificato, il valore |
Facoltativo | Stringa |
variablePrefix |
Facoltativamente, specifica il delimitatore iniziale su una variabile di flusso. Il valore predefinito è "{". Per Per saperne di più, consulta Riferimento per le variabili di flusso. | Facoltativo | Carattere |
variableSuffix |
Facoltativamente, specifica il delimitatore finale su una variabile di flusso. Il valore predefinito è "}". Per Per saperne di più, consulta Riferimento per le variabili di flusso. | Facoltativo | Carattere |
<QueryParams>
(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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Set> </AssignMessage>
Esempio 1
Nell'esempio seguente viene impostato l'"indirizzo" al valore del parametro di ricerca
Variabile request.header.address
:
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
Puoi utilizzare <QueryParams>
solo se vengono soddisfatti i seguenti criteri:
- Verbo HTTP: GET
- Tipo di messaggio: richiesta
Se nel criterio vengono definiti parametri di ricerca vuoti
(<Set><QueryParams/></Set>
), il criterio non imposta alcuna query
parametri. Equivale all'omissione di <QueryParams>
.
<ReasonPhrase>
(secondario di <Set>
)
Imposta la frase del motivo sulla risposta. In genere questa operazione viene eseguita per il debug in combinazione con
<StatusCode>
. Questo elemento non ha alcun effetto su una richiesta.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Stringa |
Elemento principale |
<Set>
|
Elementi secondari | Nessuno |
L'elemento <ReasonPhrase>
utilizza la seguente sintassi:
Sintassi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> </Set> </AssignMessage>
Esempio 1
L'esempio seguente definisce una frase di motivazione semplice:
<AssignMessage name="set-reasonphrase-1"> <Set> <ReasonPhrase>Bad medicine</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Esempio 2
I contenuti di <ReasonPhrase>
vengono trattati come un modello di messaggio. Ciò significa
un nome di variabile racchiuso tra parentesi graffe verrà sostituito in fase di esecuzione con il valore del parametro
di riferimento, come illustrato nell'esempio seguente:
<AssignMessage name="set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Puoi utilizzare <ReasonPhrase>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: risposta
<StatusCode>
(secondario di <Set>
)
Imposta il codice di stato sulla 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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <StatusCode>HTTP_status_code or {variable}</StatusCode> </Set> </AssignMessage>
Esempio 1
L'esempio seguente imposta un codice di stato semplice:
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Esempio 2
I contenuti di <StatusCode>
vengono trattati come un modello di messaggio. Ciò significa
nome della variabile racchiuso tra parentesi graffe verrà sostituito in fase di esecuzione con il valore della variabile
di riferimento, come illustrato nell'esempio seguente:
<AssignMessage name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </AssignMessage>
Esempio 1
L'esempio seguente imposta un verbo semplice nella richiesta:
<AssignMessage name="set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Esempio 2
I contenuti di <Verb>
vengono trattati come un modello di messaggio. Questo significa che un nome variabile
racchiuse tra parentesi graffe verrà sostituito in fase di runtime con il valore del
.
L'esempio seguente utilizza una variabile per compilare un verbo:
<AssignMessage name="set-verb-2"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
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 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
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Esempio 1
Nell'esempio seguente il numero di versione viene impostato su "1.1":
<AssignMessage name="set-version-1"> <Set> <Version>1.1</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Esempio 2
Di seguito viene utilizzata una variabile tra parentesi graffe per impostare il numero di versione:
<AssignMessage name="set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
I contenuti di <Version>
vengono trattati come un modello di messaggio. Ciò significa
nome della variabile racchiuso tra parentesi graffe verrà sostituito in fase di runtime con il valore del valore
.
Puoi utilizzare <Version>
solo se vengono soddisfatti i seguenti criteri:
- Tipo di messaggio: richiesta
Crea messaggi di richiesta personalizzati
Puoi utilizzare il criterioAssignMessage per creare un messaggio di richiesta personalizzato. Dopo aver creato un account richiesta, puoi utilizzarla nei seguenti modi:
- Accedi alle relative variabili in altri criteri
- Passalo a un servizio esterno
Per creare un messaggio di richiesta personalizzato, utilizza l'elemento <AssignTo>
nel criterioAssignMessage
. Imposta createNew
su "true" e specificare il nome del nuovo messaggio nel corpo
dell'elemento, come illustrato nell'esempio seguente:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Per impostazione predefinita, Edge non fa nulla con il messaggio di richiesta personalizzato. Dopo averlo creato, Edge durante il flusso con la richiesta originale. Per utilizzare la richiesta personalizzata, aggiungi un criterio come come criterio ServiceCallout al proxy in grado di passare la richiesta personalizzata a un completamente gestito di Google Cloud.
I seguenti esempi creano messaggi di richiesta personalizzati:
Esempio 1
Nell'esempio seguente viene creato un oggetto di richiesta personalizzato con Assegna messaggio:
<AssignMessage name="AssignMessage-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Copy> <Headers> <Header name="user-agent"/> </Headers> </Copy> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
Questo esempio:
- Crea un nuovo oggetto del messaggio di richiesta denominato "MyCustomRequest".
- Su MyCustomRequest, queste norme:
- Copia il valore dell'intestazione HTTP
user-agent
dalla richiesta al nuovo messaggio. Poiché<Copy>
utilizza un riferimento assoluto aluser-agent
, non c'è è necessario specificare l'attributosource
in<Copy>
. - 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
.
- Copia il valore dell'intestazione HTTP
- Imposta
<IgnoreUnresolvedVariables>
su "false". Quando<IgnoreUnresolvedVariables>
è "false". Se una delle variabili che il criterio cerca di aggiungere non esiste, Edge verrà arrestato nel flusso dell'API.
Esempio 2
Ecco un altro esempio che mostra come creare un oggetto di richiesta personalizzato con Assegna Messaggio:
<AssignMessage name="AssignMessage-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> <Payload contentType="text/xml"> <request><operation>105</operation></request> </Payload> </Set> </AssignMessage>
In questo esempio viene creata una nuova richiesta personalizzata denominata "partner.request". Quindi imposta
<Verb>
e <Payload>
in merito alla nuova richiesta.
Puoi accedere a un messaggio di richiesta personalizzato in un altro criterioAssignMessage che verrà applicato in seguito
il flusso. L'esempio seguente restituisce il valore del messaggio
Intestazione user-agent
:
<AssignMessage name="custom-request-1-access"> <DisplayName>custom-request-1-access</DisplayName> <AssignTo createNew="false" type="request"></AssignTo> <Set> <Headers> <Header name="user-agentCopyCustomRequest">{MyCustomRequest.header.user-agent}</Header> </Headers> </Set> </AssignMessage>
Video
Guarda i video seguenti per scoprire di più sul criterioAssignMessage.
Video | Descrizione |
---|---|
Perché assegnare i ruoli Norme relative ai messaggi? | Scopri i vantaggi dell'utilizzo del criterioAssignMessage per modificare la richiesta API o senza modificare il codice di backend. |
Copia elementi API utilizzando il criterioAssignMessage | Copia elementi da una richiesta o risposta API e crea una nuova richiesta o risposta mediante il criterioAssignMessage. |
Rimuovi API che usano il criterioAssignMessage | Rimuovi gli elementi dell'API e modifica l'API prima che raggiunga il backend di destinazione utilizzando Assegna il criterio AskMessage. |
Aggiungi e imposta API che usano il criterioAssignMessage | Modifica la richiesta o la risposta API aggiungendo parametri di ricerca, intestazioni, parametri del modulo oppure payload usando il criterioAssignMessage. |
Crea impostazioni personalizzate variabili usando il criterioAssignMessage | Imposta variabili di flusso personalizzate utilizzando il criterioAssignMessage e utilizza le variabili in altri criteri nel proxy API. |
Crea nuovo oggetti di richiesta o risposta usando il criterioAssignMessage | Crea nuovi oggetti di richiesta o risposta API utilizzando il criterioAssignMessage nell'API runtime. |
Crea un'API fittizia utilizzando il criterioAssignMessage | Crea una semplice API REST fittizia aggiungendo il criterioAssignMessage nella risposta flusso di lavoro. |
Imposta o modifica payload utilizzando il criterioAssignMessage | Converti la richiesta REST in una richiesta SOAP impostando il payload SOAP utilizzando il criterioAssignMessage durante il runtime delle API. |
Codici di errore
Questa sezione descrive i codici e i messaggi di errore restituiti, nonché le variabili di errore impostate da Edge quando questo criterio attiva un errore. È importante sapere se stai sviluppando regole di errore per 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 quando il criterio viene eseguito.
Codice di errore | Stato HTTP | Causa | Correggi |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | Il criterio non è stato in grado di impostare una variabile. Controlla la stringa di errore per il nome del non risolta. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
Questo errore si verifica se l'attributo Le variabili del tipo di messaggio rappresentano intere richieste e risposte HTTP. Il dispositivo Edge integrato
le variabili di flusso |
build |
steps.assignmessage.UnresolvedVariable |
500 |
Questo errore si verifica se una variabile specificata nel criterio Assegna messaggio è:
|
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 <Copy> e/o <Remove> della sezione Assegna messaggio
è 0 o un numero negativo, il deployment del proxy API non va a buon fine.
|
build |
InvalidVariableName |
Se l'elemento secondario <Name> è vuoto o non specificato nell'elemento <AssignVariable> ,
il deployment del proxy API non riesce perché non esiste un nome di variabile valido in
a cui assegnare un valore. È richiesto un nome di variabile valido.
|
build |
InvalidPayload |
Un payload specificato nel criterio non è valido. |
Variabili di errore
Queste variabili vengono impostate quando il criterio attiva un errore in fase di runtime. Per ulteriori informazioni, consulta Cosa che devi conoscere sugli errori relativi alle norme.
Variabili | Dove | Esempio |
---|---|---|
fault.name="fault_name" |
fault_name è il nome dell'errore, come elencato nella precedente tabella Errori di runtime. Il nome dell'errore è l'ultima parte del codice di errore. | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name è il nome specificato dall'utente del criterio che ha generato l'errore. | assignmessage.AM-SetResponse.failed = true |
Esempio di risposta di errore
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
Esempio di regola di errore
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
Schemi
Ogni tipo di criterio è definito da uno schema XML (.xsd
). Come riferimento, consulta gli schemi dei criteri
sono disponibili su GitHub.
Argomenti correlati
Operazione in corso esempi del criterioAssignMessage sono disponibili negli esempi della piattaforma API.
Per un esempio più avanzato di come eseguire l'override di target.url
dalla
ProxyEndpoint, consulta questo articolo della community Apigee.
Per visualizzare un "percorso impostato" in azione in un criterio ServiceCallout, consulta questo esempio di apprendimento facendo pratica negli esempi di GitHub di Apigee. Basta clonare il repository segui le istruzioni in questo argomento. L'esempio utilizza il criterioAssignMessage per impostare un percorso di richiesta, utilizza quindi un criterio callout di servizio per inviare la richiesta a un servizio esterno.