criterio HTTPModifier

Cosa

Il criterio HTTPModifier può modificare un messaggio di richiesta o risposta esistente.

Il criterio consente di eseguire le azioni seguenti sui messaggi:

  • Aggiungere nuovi parametri di modulo, intestazioni o parametri di ricerca a un messaggio.
  • Rimuovere intestazioni, parametri di ricerca e parametri del modulo da un messaggio
  • Imposta il valore delle proprietà esistenti in un messaggio

Con HTTPModifier, puoi aggiungere, modificare o rimuovere le proprietà dei una richiesta o una risposta. In alternativa, puoi utilizzare HTTPModifier per creare un prompt un messaggio di richiesta o risposta e passarlo a una destinazione alternativa, come descritto in Creare messaggi di richiesta personalizzati.

Il criterio HTTPModifier può creare variabili di flusso con il seguente elemento figlio elementi:

Nell'ordine in cui organizzi <Add>, <Set>, e <Remove> è importante. Il criterio esegue queste azioni nell'ordine indicato in cui vengono visualizzate nella configurazione dei criteri. Se devi rimuovere tutte le intestazioni, imposta un valore un'intestazione specifica, devi includere l'elemento <Remove> prima dell'elemento <Set>.

Questo criterio è un criterio standard e può essere implementato in qualsiasi tipo di ambiente. Non tutte gli utenti devono conoscere i tipi di criteri e di ambiente. Per informazioni sui tipi di criteri e sulla disponibilità per ciascun tipo di ambiente, consulta Tipi di criteri.

<HTTPModifier> elemento

Definisce un criterio HTTPModifier.

Valore predefinito Consulta la scheda Criterio predefinito di seguito
Obbligatorio? Obbligatorio
Tipo Oggetto complesso
Elemento principale N/D
Elementi secondari <Add>
<AssignTo>
<DisplayName>
<IgnoreUnresolvedVariables>
<Remove>
<Set>

L'elemento <HTTPModifier> utilizza la seguente sintassi:

Sintassi

L'elemento <HTTPModifier> utilizza la seguente sintassi:

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- All HTTPModifier child elements are optional -->
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>

  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>

  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>

  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>

  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>

  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <Path>PATH</Path>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>

</HTTPModifier>

Criterio predefinito

L'esempio seguente mostra le impostazioni predefinite quando aggiungi un criterio HTTPModifier al tuo flusso nella UI di Apigee:

<HTTPModifier continueOnError="false" enabled="true" name="http-modifier-default">
  <DisplayName>HTTP Modifier-1</DisplayName>
  <Properties/>
  <Remove>
    <Headers>
      <Header name="h1"/>
    </Headers>
    <QueryParams>
      <QueryParam name="q1"/>
    </QueryParams>
    <FormParams>
      <FormParam name="f1"/>
    </FormParams>
  </Remove>
  <Add>
    <Headers/>
    <QueryParams/>
    <FormParams/>
  </Add>
  <Set>
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <!-- <Verb>GET</Verb> -->
    <Path/>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</HTTPModifier>

Quando si inserisce un nuovo criterio HTTPModifier nella UI di Apigee, il modello contiene stub per le possibili operazioni. In genere, devi selezionare le operazioni da eseguire con questo criterio e rimuovi gli altri elementi secondari. Ad esempio, se vuoi eseguire un'operazione di aggiunta, utilizza il metodo <Add> e rimuovi <Remove> e altri elementi secondari da per renderlo più leggibile.

Questo elemento ha i seguenti attributi comuni a tutti i criteri:

Attributo Predefinito Obbligatorio? Descrizione
name N/A Obbligatorio

Il nome interno del criterio. Il valore dell'attributo name può contenere lettere, numeri, spazi, trattini, trattini bassi e punti. Questo valore non può superare i 255 caratteri.

Facoltativamente, utilizza l'elemento <DisplayName> per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

continueOnError falso Facoltativo Imposta su false per restituire un errore in caso di errore del criterio. Questo è un comportamento previsto per la maggior parte dei criteri. Imposta su true per continuare l'esecuzione del flusso anche dopo un errore nel criterio. Vedi anche:
enabled true Facoltativo Imposta su true per applicare il criterio. Imposta su false per disattivare il criterio. Il criterio non verrà applicato anche se rimane collegato a un flusso.
async   falso Deprecato Questo attributo è stato ritirato.

La tabella seguente fornisce una descrizione generale degli elementi secondari di <HTTPModifier>:

Elemento secondario Obbligatorio? Descrizione
Operazioni comuni
<Add> Facoltativo Aggiunge informazioni all'oggetto del messaggio specificato dall'oggetto <AssignTo>.

<Add> aggiunge al messaggio intestazioni o parametri che non esistono nell'originale . Tieni presente che anche <Set> offre questa funzionalità.

Per sovrascrivere le intestazioni o i parametri esistenti, utilizza l'elemento <Set>.

<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>.

<Set> sovrascrive le intestazioni o i parametri già presenti nell'originale o ne aggiunge di nuovi.

Altri elementi secondari
<AssignTo> Facoltativo Specifica su quale messaggio opera il criterio HTTPModifier. Può essere il modello richiesta o risposta oppure può essere un nuovo messaggio personalizzato.
<IgnoreUnresolvedVariables> Facoltativo Determina se l'elaborazione si interrompe quando viene rilevata una variabile non risolta.

Nelle sezioni che seguono viene descritto ognuno di questi elementi secondari.

Esempi

I seguenti esempi mostrano alcuni modi in cui è possibile utilizzare HTTPModifier norme:

1: Aggiungi intestazione

Nell'esempio seguente viene aggiunta un'intestazione alla richiesta con Elemento <Add>. In questo esempio viene generata la variabile VerificationAPIKey In base al criterio VerifyAPIKey:

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

2: Modifica la risposta

Nell'esempio seguente, modifica un oggetto risposta esistente aggiungendo un'intestazione:

<HTTPModifier name="HM-modify-response">
  <Set>
    <Headers>
      <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Questo esempio non crea un nuovo messaggio. Al contrario, modifica un messaggio di risposta esistente aggiungendo un'intestazione HTTP.

Poiché questo esempio specifica response come nome della variabile nell' <AssignTo>, questo criterio modifica l'oggetto risposta originariamente inserito impostato con i dati restituiti dal server di destinazione.

L'intestazione HTTP aggiunta al messaggio di risposta da questo criterio deriva da una variabile compilata dal criterio LookupCache. Di conseguenza, il messaggio di risposta modificato Il criterio HTTPModifier contiene un'intestazione HTTP che indica se i risultati sono stati o meno dalla cache. L'impostazione delle intestazioni nella risposta può essere utile per il debug e risoluzione dei problemi.

3. Rimozione del parametro di query

L'esempio seguente rimuove il parametro di query apikey dalla richiesta:

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

È consigliabile rimuovere il parametro di query apikey dalla richiesta quando utilizzi il criterio VerifyAPIKey per l'autenticazione utente. Lo scopo è evitare che le informazioni chiave sensibili vengano passate alla destinazione del backend.

Riferimento elemento secondario

In questa sezione vengono descritti gli elementi secondari di <HTTPModifier>.

<Add>

Aggiunge informazioni alla richiesta o alla risposta, specificate dal <AssignTo> .

L'elemento <Add> aggiunge nuove proprietà al messaggio che non esistono nell'originale . Tieni presente che anche <Set> offre questa funzionalità. Per modificare i valori di esistenti, usa l'elemento <Set>.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Tipo complesso
Elemento principale <HTTPModifier>
Elementi secondari <FormParams>
<Headers>
<QueryParams>

L'elemento <Add> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>
</HTTPModifier>

Esempio 1

Nell'esempio seguente viene utilizzato l'elemento <FormParams> per ottenere i valori di tre parametri della stringa di query dalla richiesta iniziale e impostarli come parametri del modulo nella richiesta dell'endpoint di destinazione:

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 2

Nell'esempio seguente viene utilizzato l'elemento <Headers> per aggiungere un elemento partner-id alla richiesta che verrà inviata all'endpoint di destinazione:

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 3

L'esempio seguente utilizza l'elemento <QueryParams> per aggiungere una singola query con un valore statico alla richiesta:

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Questo esempio utilizza <Add> nel pre-flusso della richiesta. Se osservi i risultati in uno strumento ad esempio lo strumento di debug, la richiesta a https://example-target.com/get diventa https://example-target.com/get?myParam=42.

Gli elementi secondari di <Add> supportano la sostituzione dinamica delle stringhe, nota come modelli di messaggio.

<FormParams> (secondario di <Add>)

Aggiunge nuovi parametri di modulo al messaggio di richiesta. Questo elemento non ha alcun effetto su 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

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>
  </Add>
</HTTPModifier>

Esempio 1

Nell'esempio seguente viene aggiunto un singolo parametro di modulo (answer) e un valore statico (42) per la richiesta:

<HTTPModifier name="HM-add-formparams-1">
  <Add>
    <FormParams>
      <FormParam name="answer">42</FormParam>
    </FormParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 2

L'esempio seguente restituisce il valore del parametro di query name e lo aggiunge alla richiesta come parametro del modulo e poi rimuove il parametro di query:

<HTTPModifier name="HM-Swap-QueryParam-to-FormParams">
  <Add>
    <FormParam name="name">{request.queryparam.name}
  </Add>
  <Remove>
    <QueryParam name="name"/>
  </Remove>
</HTTPModifier>

Tieni presente che questo esempio non specifica un target con <AssignTo>. Questo criterio aggiunge il parametro alla richiesta.

Esempio 3

Nell'esempio seguente vengono aggiunti più parametri di modulo alla richiesta:

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Questo esempio ottiene i parametri della stringa di query dalla richiesta di origine e li aggiunge come parametri del modulo con nomi diversi. Successivamente, rimuove i parametri di ricerca originali. Apigee invierà la richiesta modificata all'endpoint di destinazione.

Puoi utilizzare lo strumento di debug per osservare il flusso. Vedrai che il corpo della richiesta contiene i dati del modulo con codifica URL, che erano stati originariamente trasmessi come stringa di query parametri:

username=nick&zip_code=90210&default_language=en

Puoi utilizzare <FormParams> solo se vengono soddisfatti i seguenti criteri:

  • Verbi HTTP: GET, POST
  • Tipo di messaggio: richiesta
  • Uno (o entrambi) dei seguenti elementi:
    • Dati del modulo. Imposta un valore o "" (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, con curl aggiungi -H "Content-Length: 0" alla tua richiesta.

Ad esempio:

curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded"
  https://ahamilton-eval-test.apigee.net/am-test

Quando aggiungi <FormParams>, Apigee imposta l'intestazione Content-Type della richiesta su application/x-www-form-urlencoded prima di inviare il messaggio al servizio di destinazione.

<Headers> (secondario di <Add>)

Aggiunge nuove intestazioni alla richiesta o 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

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Add>
</HTTPModifier>

Esempio 1

Nell'esempio seguente viene aggiunta un'intestazione partner-id al messaggio di richiesta e assegna il valore della variabile di flusso verifyapikey.VAK-1.developer.app.partner-id a quell'intestazione.

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<QueryParams> (secondario di <Add>)

Aggiunge nuovi parametri di 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

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>
</HTTPModifier>

Esempio 1

Nell'esempio seguente viene aggiunto il parametro di query myParam alla richiesta e viene assegnato il valore 42 a favore:

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Puoi utilizzare <QueryParams> solo se vengono soddisfatti i seguenti criteri:

  • Verbi HTTP: GET, POST
  • 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 ricerca (<Add><QueryParams/></Add>), il criterio non aggiunge alcuna query parametri. Equivale all'omissione di <QueryParams>.

<AssignTo>

Determina su quale oggetto opera il criterio HTTPModifier. 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 criterio HTTPModifier. Ad esempio, non puoi utilizzare <Add> o <Set> per aggiungere o modificare parametri di ricerca (<QueryParams>) o parametri del modulo (<FormParams>) nella risposta. Puoi solo modificare parametri di ricerca e i parametri del modulo nella richiesta.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Stringa
Elemento principale <HTTPModifier>
Elementi secondari Nessuno

Se non specifichi <AssignTo> o se specifichi l'elemento <AssignTo> ma devi non specifichi un valore di testo per l'elemento, il criterio agisce sulla richiesta o sulla risposta predefinita, che si basa su dove viene eseguito il criterio. Se il criterio viene eseguito nel flusso di richiesta, influisce sul messaggio di richiesta. Se viene eseguito nel flusso di risposta, il criterio influisce sulla risposta per impostazione predefinita.

L'elemento <AssignTo> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>
</HTTPModifier>

Esempio 1

L'esempio seguente non specifica nessun messaggio nel testo dell'istruzione <AssignTo>. Ciò implica che il criterio agirà sul messaggio request o response, a seconda di dove viene eseguito il criterio.

<HTTPModifier name="assignto-1">
  <AssignTo createNew="false" transport="http" type="request"/>
  ...
</HTTPModifier>

Se specifichi createNew="false" e non fornisci esplicitamente un nome per il messaggio, gli altri attributi di <AssignTo> non sono pertinenti. In questo caso, potresti omettere completamente l'elemento <AssignTo>.

Esempio 2

Nell'esempio seguente viene creato un nuovo oggetto di richiesta, sovrascrivendo l'oggetto esistente:

<HTTPModifier name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"/>
  ...
</HTTPModifier>

Quando crei un nuovo oggetto di richiesta o risposta, gli altri elementi di HTTPModifier (ad esempio <Add> 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:

<HTTPModifier name="assignto-3">
  <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
  ...
</HTTPModifier>

Quando crei un nuovo oggetto di richiesta o risposta, gli altri elementi di HTTPModifier (ad esempio <Add> e <Set> agiscono in base al nuovo di richiesta di addestramento.

Puoi accedere al nuovo oggetto di richiesta per nome in altri criteri in un secondo momento nel flusso oppure inviare il nuovo 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 true, il criterio crea una nuova variabile di tipo specificato da type (request o response). Se non specificano il nome della nuova variabile, il criterio crea una nuova richiesta o risposta predefinita, in base al valore di type.

Se false, il criterio risponde in uno dei due modi seguenti:

  • Se <AssignTo> riesce a risolvere il nome della variabile in una richiesta o risposta, continua l'elaborazione. Ad esempio, se il criterio si trova in un flusso di richiesta, la variabile è di richiesta di addestramento. Se il criterio è in una risposta, la variabile è .
  • Se <AssignTo> non può essere risolto o si risolve in un tipo non messaggio, la criterio genera un errore.

Se createNew non viene specificato, il criterio risponde in uno dei due modi seguenti:

  • Se <AssignTo> si risolve in un messaggio, l'elaborazione avanza alla successiva passaggio.
  • Se <AssignTo> non può essere risolto o si risolve in un tipo non messaggio, viene viene creata la variabile di tipo specificato in type.
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 sono request o response.

Il valore predefinito è request. Se ometti questo attributo, Apigee crea una richiesta o una risposta, a seconda del punto del flusso in cui viene eseguito questo criterio.

Facoltativo Stringa

<DisplayName>

Utilizzalo in aggiunta all'attributo name per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso e più naturale.

L'elemento <DisplayName> è comune a tutti i criteri.

Valore predefinito N/A
Obbligatorio? Facoltativo. Se ometti <DisplayName>, viene utilizzato il valore dell'attributo name del criterio.
Tipo Stringa
Elemento principale <PolicyElement>
Elementi secondari Nessuna esperienza

La sintassi dell'elemento <DisplayName> è la seguente:

Sintassi

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Esempio

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

L'elemento <DisplayName> non ha attributi o elementi secondari.

<IgnoreUnresolvedVariables>

Determina se l'elaborazione si interrompe quando viene rilevata una variabile non risolta.

Valore predefinito Falso
Obbligatorio? Facoltativo
Tipo Booleano
Elemento principale <HTTPModifier>
Elementi secondari Nessuno

Imposta su true per ignorare le variabili non risolte e continuare l'elaborazione. altrimenti false. Il valore predefinito è false.

L'impostazione di <IgnoreUnresolvedVariables> su true è diversa dall'impostazione di <HTTPModifier> da continueOnError a true in quanto è specifico per l'impostazione e il recupero dei valori di come la codifica one-hot delle variabili categoriche. Se imposti continueOnError su true, Apigee ignora tutti gli errori, non ma solo gli errori riscontrati durante l'uso delle variabili.

L'elemento <IgnoreUnresolvedVariables> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
</HTTPModifier>

Esempio 1

L'esempio seguente imposta <IgnoreUnresolvedVariables> su true:

<HTTPModifier name="HM-Set-Headers">
  <Set>
    <Headers>
      <Header name='new-header'>{possibly-defined-variable}<Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</HTTPModifier>

Poiché <IgnoreUnresolvedVariables> è impostato su true, se la variabile possibly-defined-variable non è definita, questo criterio verrà non generare un errore.

<Remove>

Rimuove intestazioni, parametri di ricerca o parametri del modulo da un messaggio. Un tag vuoto rimuove tutti i parametri corrispondenti, tra cui intestazioni, parametri modulo e queryparams.

Il messaggio interessato può essere una richiesta o una risposta. Tu specifichi quale messaggio <Remove> interviene utilizzando l'elemento <AssignTo>.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Tipo complesso
Elemento principale <HTTPModifier>
Elementi secondari <FormParams>
<Headers>
<QueryParams>

Un caso d'uso comune di <Remove> è l'eliminazione di un parametro di query o di un'intestazione che contiene dati sensibili dall'oggetto della richiesta in entrata, per evitare di passarlo al server di backend.

L'elemento <Remove> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

Esempio 1

L'esempio seguente rimuove tutti i parametri del modulo e un parametro di query da l'oggetto request:

<HTTPModifier name="HM-remove-2">
  <Remove>
    <!-- Empty (<FormParams/>) removes all form parameters -->
    <FormParams/>
    <QueryParams>
      <QueryParam name="qp1"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 2

Nell'esempio seguente viene rimosso tutto da un oggetto di messaggio:

<HTTPModifier name="HM-remove-3">
  <Remove/>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Di solito, questa operazione viene eseguita solo se vuoi utilizzare l'elemento <Set> per imposta alcuni valori sostitutivi nel messaggio.

<FormParams> (secondario di <Remove>)

Rimuove i parametri del modulo specificati dalla richiesta. Questo elemento non ha alcun effetto su un risposta.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Array di elementi <FormParam> o un array vuoto
Elemento principale <Remove>
Elementi secondari <FormParam>

L'elemento <FormParams> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Remove>
</HTTPModifier>

Esempio 1

L'esempio seguente rimuove tre parametri del modulo dalla richiesta:

<HTTPModifier name="HM-remove-formparams-1">
  <Remove>
    <FormParams>
      <FormParam name="form_param_1"/>
      <FormParam name="form_param_2"/>
      <FormParam name="form_param_3"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 2

L'esempio seguente rimuove tutti i parametri del modulo dalla richiesta:

<HTTPModifier name="HM-remove-formparams-2">
  <Remove>
    <FormParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 3

Se esistono più parametri del modulo con lo stesso nome, utilizza la seguente sintassi:

<HTTPModifier name="HM-remove-formparams-3">
  <Remove>
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Questo esempio rimuove f1, f2 e il secondo valore di f3. Se f3 ha un solo elemento non viene rimosso.

Puoi utilizzare <FormParams> solo se vengono soddisfatti i seguenti criteri:

  • Tipo di messaggio: richiesta
  • Content-Type: application/x-www-form-urlencoded

<Headers> (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

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Remove>
</HTTPModifier>

Esempio 1

L'esempio seguente rimuove l'intestazione user-agent dalla richiesta:

<HTTPModifier name="HM-remove-one-header">
  <Remove>
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 2

L'esempio seguente rimuove tutte le intestazioni dalla richiesta:

<HTTPModifier name="HM-remove-all-headers">
  <Remove>
    <Headers/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 3

Se esistono più intestazioni con lo stesso nome, utilizza la seguente sintassi:

<HTTPModifier name="HM-remove-headers-3">
  <Remove>
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Questo esempio rimuove dalla richiesta h1, h2 e il secondo valore di h3. Se h3 ha un solo valore, non viene rimosso.

<QueryParams> (secondario di <Remove>)

Rimuove dalla richiesta i parametri di ricerca specificati. Questo elemento non ha alcun effetto su un risposta.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Array di elementi <QueryParam> o un array vuoto
Elemento principale <Remove>
Elementi secondari <QueryParam>

L'elemento <QueryParams> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

Esempio 1

L'esempio seguente rimuove un singolo parametro di query dalla richiesta:

<HTTPModifier name="HM-remove-queryparams-1">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 2

L'esempio seguente rimuove tutti parametri di ricerca dalla richiesta:

<HTTPModifier name="HM-remove-queryparams-2">
  &tl;Remove>
      <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 3

Se esistono più parametri di query con lo stesso nome, utilizza la seguente sintassi:

<HTTPModifier name="HM-remove-queryparams-3">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
        <QueryParam name="qp2"/>
        <QueryParam name="qp3.2"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Questo esempio rimuove dalla richiesta qp1, qp2 e il secondo valore di qp3. Se qp3 ha un solo valore, quindi non viene rimosso.

Esempio 4

L'esempio seguente rimuove il parametro di query apikey dalla richiesta:

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Puoi utilizzare <QueryParams> solo se vengono soddisfatti i seguenti criteri:

  • Verbi HTTP: GET, POST
  • Tipo di messaggio: richiesta

<Set>

Imposta le informazioni nel messaggio di richiesta o risposta, che è specificato dal Elemento <AssignTo>. <Set> sovrascrive le intestazioni o parametri di query o modulo già esistenti nel messaggio originale o aggiungerne di nuovi se non sono presenti.

Le intestazioni e i parametri di query e modulo in un messaggio HTTP possono contenere più valori. Per aggiungere valori aggiuntivi per un'intestazione o un parametro, utilizza invece l'elemento <Add>.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Tipo complesso
Elemento principale <HTTPModifier>
Elementi secondari <FormParams>
<Headers>
<Path>
<QueryParams>
<StatusCode>
<Verb>
<Version>

L'elemento <Set> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <Path>PATH</Path>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

Esempio

L'esempio seguente imposta un'intestazione specifica. Quando questo criterio viene collegato nel flusso di richiesta, consente al sistema upstream di ricevere un'intestazione aggiuntiva non inclusa nel richiesta in entrata originale.

<HTTPModifier name="HM-Set-Header">
  <Set>
    <Headers>
        <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header>
    </Headers>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<FormParams> (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

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Set>
</HTTPModifier>

Esempio 1

Nell'esempio seguente viene impostato un parametro del modulo denominato myparam sul valore dell'attributo Variabile request.header.myparam in una nuova richiesta personalizzata:

<HTTPModifier name="HM-set-formparams-1">
  <Set>
    <FormParams>
      <FormParam name="myparam">{request.header.myparam}</FormParam>
    </FormParams>
  </Set>
  <AssignTo createNew="true" transport="http" type="request>>MyCustomRequest</AssignTo>
</HTTPModifier>

Puoi utilizzare <FormParams> solo se vengono soddisfatti i seguenti criteri:

  • Verbo HTTP: POST
  • Tipo di messaggio: richiesta

Se 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

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Set>
</HTTPModifier>

Esempio 1

Nell'esempio seguente l'intestazione x-ratelimit-remaining viene impostata sul valore del valore Variabile ratelimit.Quota-1.available.count:

<HTTPModifier name="HM-Set-RateLimit-Header">
  <Set>
    <Headers>
      <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header>
    </Headers>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Se definisci intestazioni vuote nel criterio (<Set><Headers/></Set>), il criterio non imposta nessuna intestazione. Questo avrà lo stesso effetto dell'omissione di <Headers>.

<Path> (secondario di <Set>)

<QueryParams> (secondario di <Set>)

Sovrascrive parametri di ricerca esistenti nella richiesta con nuovi valori. Questo elemento non ha alcun effetto su una risposta.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Array di <QueryParam> elementi
Elemento principale <Set>
Elementi secondari <QueryParam>

L'elemento <QueryParams> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Set>
</HTTPModifier>

Esempio 1

L'esempio seguente imposta il parametro di query address sul valore di Variabile request.header.address:

<HTTPModifier name="HM-set-queryparams-1">
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.header.address}</QueryParam>
    </QueryParams>
  </Set>
</HTTPModifier>

Puoi utilizzare <QueryParams> solo se vengono soddisfatti i seguenti criteri:

  • Verbi HTTP: GET, POST
  • Tipo di messaggio: richiesta

Se nel criterio vengono definiti parametri di ricerca vuoti (<Set><QueryParams/></Set>), il criterio non imposta alcuna query parametri. Equivale all'omissione di <QueryParams>.

<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

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
  </Set>
</HTTPModifier>

Esempio 1

L'esempio seguente imposta un codice di stato semplice:

<HTTPModifier name="HM-set-statuscode-404">
  <Set>
    <StatusCode>404<<StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Esempio 2

I contenuti di <StatusCode> vengono trattati come un modello di messaggio. Ciò significa 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:

<HTTPModifier name="set-statuscode-2">
  <Set>
    <StatusCode>{calloutresponse.status.code}</StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Puoi utilizzare <StatusCode> solo se vengono soddisfatti i seguenti criteri:

  • Tipo di messaggio: risposta

<Verb> (secondario di <Set>)

Imposta il verbo HTTP sulla richiesta. Questo elemento non ha alcun effetto su una risposta.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Stringa o VARIABLE
Elemento principale <Set>
Elementi secondari Nessuno

L'elemento <Verb> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
  </Set>
</HTTPModifier>

Esempio 1

L'esempio seguente imposta un verbo semplice nella richiesta:

<HTTPModifier name="HM-set-verb-1">
  <Set>
    <Verb>POST</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Esempio 2

I contenuti di <Verb> vengono trattati come un modello di messaggio. 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:

<HTTPModifier name="HM-set-verb-to-dynamic-value">
  <Set>
    <Verb>{my_variable}</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Puoi utilizzare <Verb> solo se vengono soddisfatti i seguenti criteri:

  • Tipo di messaggio: richiesta

<Version> (secondario di <Set>)

Imposta la versione HTTP su una richiesta. Questo elemento non ha alcun effetto su una risposta.

Valore predefinito N/D
Obbligatorio? Facoltativo
Tipo Stringa o VARIABLE
Elemento principale <Set>
Elementi secondari Nessuno

L'elemento <Version> utilizza la seguente sintassi:

Sintassi

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

Esempio 1

Nell'esempio seguente il numero di versione viene impostato su 1.1:

<HTTPModifier name="HM-set-version-1">
  <Set>
    <Version>1.1</Version>
  </Set>
</HTTPModifier>

Esempio 2

Di seguito viene utilizzata una variabile tra parentesi graffe per impostare il numero di versione:

<HTTPModifier name="HM-set-version-2">
  <Set>
    <Version>{my_version}</Version>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

I contenuti di <Version> vengono trattati come un modello di messaggio. Ciò significa 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 HTTPModifier 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> in HTTPModifier . Imposta createNew su true e specifica il nome del nuovo messaggio nel corpo dell'elemento, come illustrato nell'esempio seguente:

<HTTPModifier name="assignto-3">
    <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
    ...
  </HTTPModifier>

Per impostazione predefinita, Apigee non esegue alcuna operazione con il messaggio di richiesta personalizzato. Dopo averlo creato, Apigee durante il flusso con la richiesta originale. Per utilizzare la richiesta personalizzata, aggiungi un criterio come che utilizza il messaggio di richiesta e fa riferimento esplicitamente alla richiesta appena creata nella configurazione del criterio. Questo ti consente di passare la richiesta personalizzata a un endpoint di servizio esterno.

I seguenti esempi creano messaggi di richiesta personalizzati:

Esempio 1

Nell'esempio seguente viene creato un oggetto di richiesta personalizzato con HTTPModifier:

<HTTPModifier name="HTTPModifier-3">
  <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.addy}</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</HTTPModifier>

Questo esempio:

  • Crea un nuovo oggetto del messaggio di richiesta denominato MyCustomRequest.
  • Su MyCustomRequest, queste norme:
    • Imposta il parametro di query address nel messaggio personalizzato sul valore di il parametro di query addy della richiesta in entrata.
    • Imposta il verbo HTTP su GET.
  • Imposta <IgnoreUnresolvedVariables> su false. Quando <IgnoreUnresolvedVariables> è false, se una delle variabili a cui si fa riferimento nella configurazione dei criteri non esiste, Apigee inserisci lo stato di errore nel flusso dell'API.

Esempio 2

Ecco un altro esempio che mostra come creare un oggetto di richiesta personalizzato HTTPModifier:

<HTTPModifier name="HTTPModifier-2">
  <AssignTo createNew="true" type="request">partner.request</AssignTo>
  <Set>
    <Verb>POST</Verb>
  </Set>
</HTTPModifier>

In questo esempio viene creata una nuova richiesta personalizzata denominata partner.request. Quindi imposta <Verb> in merito alla nuova richiesta.

Puoi accedere alle varie proprietà di un messaggio personalizzato in un altro criterio HTTPModifier che si verificano più avanti nel flusso. L'esempio seguente restituisce il valore di un'intestazione da un risposta personalizzata e la inserisce in una nuova intestazione nel messaggio di richiesta:

<HTTPModifier name="HM-Set-Header">
  <AssignTo>request</AssignTo>
  <Set>
    <Headers>
      <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header>
    </Headers>
  </Set>
</HTTPModifier>

Codici di errore

Questa sezione descrive i codici e i messaggi di errore che vengono restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti per sapere se si stanno sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta gli articoli Cosa devi sapere sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi quando il criterio viene eseguito.

Codice di errore Stato HTTP Causa Correggi
entities.UnresolvedVariable 500 Variabile del modello di messaggio in non definita o fuori ambito.
steps.httpmodifier.InvalidStatusCode 500 Il valore risolto del codice di stato non è valido. Consulta la stringa di errore per ulteriori informazioni.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome errore Causa Correggi
InvalidIndex Se l'indice specificato negli elementi <Remove> del criterio HTTPModifier è 0 o è un numero negativo, il deployment del proxy API non va a buon fine.

Variabili di errore

Queste variabili vengono impostate quando questo criterio attiva un errore in fase di runtime. Per maggiori informazioni, consulta la sezione Cosa devi sapere sugli errori dei criteri.

Variabili Dove Esempio
httpmodifier.POLICY_NAME.failed POLICY_NAME è il nome specificato dall'utente del criterio che ha generato l'errore. httpmodifier.HM-SetResponse.failed = true

Esempio di risposta di errore

{
   "fault":{
      "detail":{
         "errorcode":"steps.httpmodifier.InvalidStatusCode"
      },
      "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request"
   }
}

Esempio di regola di errore

<FaultRule name="HTTPModifier Faults">
    <Step>
        <Name>HM-CustomNonMessageTypeErrorResponse</Name>
        <Condition>(fault.name Matches "InvalidStatusCode")</Condition>
    </Step>
    <Condition>(httpmodifier.failed = true)</Condition>
</FaultRule>

Schemi

Ogni tipo di criterio è definito da uno schema XML (.xsd). Per riferimento, schemi di criteri sono disponibili su GitHub.