Qué
La política HTTPModifier puede cambiar un mensaje de solicitud o de respuesta.
La política te permite realizar las siguientes acciones con esos mensajes:
- Añadir nuevos parámetros de formulario, encabezados o parámetros de consulta a un mensaje
- Quitar encabezados, parámetros de consulta y parámetros de formulario de un mensaje
- Definir el valor de las propiedades de un mensaje
Con HTTPModifier, puede añadir, cambiar o quitar propiedades de la solicitud o de la respuesta. También puede usar HTTPModifier para crear un mensaje de solicitud o respuesta personalizado y enviarlo a un destino alternativo, tal como se describe en el artículo sobre cómo crear mensajes de solicitud personalizados.
La política HTTPModifier puede crear variables de flujo con los siguientes elementos secundarios:
El orden en el que organices los elementos <Add>
, <Set>
y <Remove>
es importante. La política ejecuta esas acciones en el orden en el que aparecen en la configuración de la política. Si necesitas quitar todos los encabezados, define un encabezado específico. Para ello, debes incluir el elemento <Remove>
antes del elemento <Set>
.
Esta política es una política estándar y se puede implementar en cualquier tipo de entorno. Para obtener información sobre los tipos de políticas y la disponibilidad de cada tipo de entorno, consulta Tipos de políticas.
Elemento <HTTPModifier>
Define una política HTTPModifier.
Valor predeterminado | Consulta la pestaña Política predeterminada que aparece más abajo. |
¿Es obligatorio? | Obligatorio |
Tipo | Objeto complejo |
Elemento principal | N/A |
Elementos secundarios |
<Add> <AssignTo> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
El elemento <HTTPModifier>
utiliza la siguiente sintaxis:
Sintaxis
El elemento <HTTPModifier>
utiliza la siguiente sintaxis:
<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>
Política predeterminada
En el siguiente ejemplo se muestran los ajustes predeterminados al añadir una política HTTPModifier a tu flujo en la interfaz de usuario de 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>
Cuando insertas una nueva política HTTPModifier en la interfaz de Apigee, la plantilla contiene stubs para todas las operaciones posibles. Normalmente, se seleccionan las operaciones que se quieren realizar con esta política y se eliminan el resto de los elementos secundarios. Por ejemplo, si quieres realizar una operación de adición, usa el elemento <Add>
y quita <Remove>
y otros elementos secundarios de la política para que sea más legible.
Este elemento tiene los siguientes atributos, que son comunes a todas las políticas:
Atributo | Predeterminado | ¿Es obligatorio? | Descripción |
---|---|---|---|
name |
N/A | Obligatorio |
El nombre interno de la política. El valor del atributo Opcionalmente, usa el elemento |
continueOnError |
falso | Opcional | Asigna el valor false para devolver un error cuando falle una política. Este es el comportamiento esperado de la mayoría de las políticas. Asigna el valor true para que la ejecución del flujo continúe incluso después de que falle una política. Consulta también:
|
enabled |
true | Opcional | Asigna el valor true para aplicar la política. Selecciona false para desactivar la política. La política no se aplicará aunque siga adjunta a un flujo. |
async |
falso | Obsoleto | Este atributo está obsoleto. |
En la siguiente tabla se ofrece una descripción general de los elementos secundarios de <HTTPModifier>
:
Elemento secundario | ¿Es obligatorio? | Descripción |
---|---|---|
Operaciones comunes | ||
<Add> |
Opcional | Añade información al objeto de mensaje especificado por el elemento <AssignTo> .
Para sobrescribir los encabezados o parámetros, usa el elemento |
<Remove> |
Opcional | Elimina los elementos especificados de la variable de mensaje indicada en el elemento <AssignTo> . |
<Set> |
Opcional | Sustituye los valores de las propiedades de la solicitud o la respuesta, que se especifican mediante el elemento <AssignTo> .
|
Otros elementos secundarios | ||
<AssignTo> |
Opcional | Especifica en qué mensaje opera la política HTTPModifier. Puede ser la solicitud o la respuesta estándar, o bien un mensaje personalizado. |
<IgnoreUnresolvedVariables> |
Opcional | Determina si el procesamiento se detiene cuando se encuentra una variable sin resolver. |
Cada uno de estos elementos secundarios se describe en las secciones que aparecen a continuación.
Ejemplos
En los siguientes ejemplos se muestran algunas de las formas en las que puedes usar la política HTTPModifier:
1: Añadir encabezado
En el siguiente ejemplo se añade un encabezado a la solicitud con el elemento <Add>
. La variable VerifyAPIKey de este ejemplo se genera
con la política 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: Modificar respuesta
En el siguiente ejemplo se modifica un objeto de respuesta añadiéndole un encabezado:
<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>
En este ejemplo no se crea un mensaje nuevo. En su lugar, modifica un mensaje de respuesta añadiendo un encabezado HTTP.
Como en este ejemplo se especifica response
como nombre de variable en el elemento <AssignTo>
, esta política modifica el objeto de respuesta que se había definido originalmente con los datos devueltos por el servidor de destino.
El encabezado HTTP que añade esta política al mensaje de respuesta se deriva de una variable rellenada por la política LookupCache. Por lo tanto, el mensaje de respuesta modificado por esta política HTTPModifier contiene un encabezado HTTP que indica si los resultados se han extraído de la caché o no. Definir encabezados en la respuesta puede ser útil para depurar y solucionar problemas.
3: Quitar parámetro de consulta
En el ejemplo siguiente, se elimina el parámetro de consulta apikey
de la solicitud:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Se recomienda eliminar el parámetro de consulta apikey
del mensaje de solicitud cuando se usa la política VerifyAPIKey para la autenticación de usuarios. De esta forma, se evita que se transfiera información sensible de la clave al backend de destino.
Referencia de elemento secundario
En esta sección se describen los elementos secundarios de <HTTPModifier>
.
<Add>
Añade información a la solicitud o a la respuesta, que se especifica en el elemento <AssignTo>
.
El elemento <Add>
añade propiedades al mensaje que no existen en el mensaje original. Ten en cuenta que <Set>
también ofrece esta función. Para cambiar los valores de las propiedades existentes, use el elemento <Set>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Tipo complejo |
Elemento principal |
<HTTPModifier>
|
Elementos secundarios |
<FormParams> <Headers> <QueryParams> |
El elemento <Add>
utiliza la siguiente sintaxis:
Sintaxis
<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>
Ejemplo 1
En el siguiente ejemplo se usa el elemento <FormParams>
para obtener los valores de tres parámetros de cadena de consulta de la solicitud inicial y definirlos como parámetros de formulario en la solicitud del endpoint de destino:
<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>
Ejemplo 2
En el siguiente ejemplo se usa el elemento <Headers>
para añadir un encabezado partner-id
a la solicitud que se enviará al endpoint de destino:
<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>
Ejemplo 3
En el siguiente ejemplo se usa el elemento <QueryParams>
para añadir un único parámetro de consulta con un valor estático a la solicitud:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
En este ejemplo se usa <Add>
en el preflujo de la solicitud. Si consultas los resultados en una herramienta, como la herramienta de depuración, la solicitud a https://example-target.com/get
se convierte en https://example-target.com/get?myParam=42
.
Los elementos secundarios de <Add>
admiten la sustitución dinámica de cadenas, conocida como plantillas de mensajes.
<FormParams>
(hijo de <Add>
)
Añade nuevos parámetros de formulario al mensaje de solicitud. Este elemento no tiene ningún efecto en un mensaje de respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <FormParam> |
Elemento principal |
<Add>
|
Elementos secundarios |
<FormParam> |
El elemento <FormParams>
utiliza la siguiente sintaxis:
Sintaxis
<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>
Ejemplo 1
En el siguiente ejemplo se añade un parámetro de formulario (answer
) y un valor estático (42
) a la solicitud:
<HTTPModifier name="HM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 2
En el siguiente ejemplo, se obtiene el valor del parámetro de consulta name
, se añade a la solicitud como parámetro de formulario y, a continuación, se elimina el parámetro de consulta:
<HTTPModifier name="HM-Swap-QueryParam-to-FormParams"> <Add> <FormParam name="name">{request.queryparam.name} </Add> <Remove> <QueryParam name="name"/> </Remove> </HTTPModifier>
Ten en cuenta que en este ejemplo no se especifica ningún objetivo con <AssignTo>
. Esta política solo añade el parámetro
a la solicitud.
Ejemplo 3
En el siguiente ejemplo se añaden varios parámetros de formulario a la solicitud:
<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>
En este ejemplo se obtienen los parámetros de cadena de consulta de la solicitud original y se añaden como parámetros de formulario con nombres diferentes. Después, elimina los parámetros de consulta originales. Apigee enviará la solicitud modificada al endpoint de destino.
Puedes usar la herramienta de depuración para ver el flujo. Verás que el cuerpo de la solicitud contiene los datos del formulario codificados en la URL, que originalmente se transfirieron como parámetros de cadena de consulta:
username=nick&zip_code=90210&default_language=en
Puedes usar <FormParams>
solo si se cumplen los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
- Una (o ambas) de las siguientes opciones:
- Datos del formulario: se asigna un valor o
""
(la cadena vacía). Por ejemplo, concurl
, añade-d ""
a tu solicitud. - Encabezado
Content-Length
: se define como 0 (si no hay datos en la solicitud original; de lo contrario, la longitud actual, en bytes). Por ejemplo, concurl
añade-H "Content-Length: 0"
a tu solicitud.
- Datos del formulario: se asigna un valor o
Por ejemplo:
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
Cuando añades <FormParams>
, Apigee asigna el valor application/x-www-form-urlencoded
a la cabecera Content-Type
de la solicitud antes de enviar el mensaje al servicio de destino.
<Headers>
(hijo de <Add>
)
Añade nuevos encabezados a la solicitud o respuesta especificada, que se indica mediante el elemento <AssignTo>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <Header> |
Elemento principal |
<Add>
|
Elementos secundarios |
<Header> |
El elemento <Headers>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Add> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo se añade un encabezado partner-id
al mensaje de solicitud y se asigna el valor de la variable de flujo verifyapikey.VAK-1.developer.app.partner-id
a ese encabezado.
<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>
(hijo de <Add>
)
Añade nuevos parámetros de consulta a la solicitud. Este elemento no tiene ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <QueryParam> |
Elemento principal |
<Add>
|
Elementos secundarios |
<QueryParam> |
El elemento <QueryParams>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> </HTTPModifier>
Ejemplo 1
En el ejemplo siguiente, se añade el parámetro de consulta myParam
a la solicitud y se le asigna el valor 42
:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Puedes usar <QueryParams>
solo si se cumplen los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
Además, solo puede definir parámetros de consulta cuando el atributo type
del elemento <AssignTo>
sea un mensaje de solicitud. Definirlos en la respuesta no tiene ningún efecto.
Si define un array vacío de parámetros de consulta en su política (<Add><QueryParams/></Add>
), la política no añade ningún parámetro de consulta. Es lo mismo que omitir <QueryParams>
.
<AssignTo>
Determina en qué objeto opera la política HTTPModifier. Las opciones disponibles son:
- Mensaje de solicitud: el
request
recibido por el proxy de API - Mensaje de respuesta: el
response
devuelto por el servidor de destino. - Mensaje personalizado: un objeto de solicitud o respuesta personalizado
Ten en cuenta que, en algunos casos, no puedes cambiar el objeto sobre el que actúa la política HTTPModifier.
Por ejemplo, no puede usar <Add>
ni <Set>
para añadir o cambiar parámetros de consulta (<QueryParams>
) o parámetros de formulario (<FormParams>
) en la respuesta. Solo puede manipular los parámetros de consulta y los parámetros de formulario en la solicitud.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Cadena |
Elemento principal |
<HTTPModifier>
|
Elementos secundarios | Ninguno |
Si no especifica <AssignTo>
o si especifica el elemento <AssignTo>
, pero no especifica un valor de texto para el elemento, la política actúa en la solicitud o respuesta predeterminada, que se basa en el lugar donde se ejecuta la política. Si la política se ejecuta en el flujo de solicitudes, afecta al mensaje de solicitud. Si se ejecuta en el flujo de respuesta, la política afecta a la respuesta de forma predeterminada.
El elemento <AssignTo>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo no se especifica ningún mensaje en el texto del <AssignTo>
. Esto implica que la política actuará sobre el mensaje request
o response
, en función de dónde se ejecute.
<HTTPModifier name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/>-- no-op --> ... </HTTPModifier>
Si especifica createNew="false"
y no proporciona explícitamente un nombre de mensaje, los demás atributos de <AssignTo>
no serán relevantes. En este caso, puede que te interese omitir por completo el elemento <AssignTo>
.
Ejemplo 2
En el siguiente ejemplo se crea un objeto de solicitud que sobrescribe el objeto anterior:
<HTTPModifier name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> ... </HTTPModifier>
Cuando creas un objeto de solicitud o de respuesta, los demás elementos de la política HTTPModifier (como <Add>
y <Set>
) actúan sobre ese nuevo objeto de solicitud.
Puedes acceder al nuevo objeto de solicitud en otras políticas más adelante en el flujo o enviar el nuevo objeto de solicitud a un servicio externo con una política ServiceCallout.
Ejemplo 3
En el siguiente ejemplo se crea un objeto de solicitud llamado MyRequestObject
:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Cuando creas un objeto de solicitud o de respuesta, los demás elementos de la política HTTPModifier (como <Add>
y <Set>
) actúan sobre ese nuevo objeto de solicitud.
Puedes acceder al nuevo objeto de solicitud por su nombre en otras políticas más adelante en el flujo o enviar el nuevo objeto de solicitud a un servicio externo con una política ServiceCallout.
En la siguiente tabla se describen los atributos de <AssignTo>
:
Atributo | Descripción | ¿Es obligatorio? | Tipo |
---|---|---|---|
createNew |
Determina si esta política crea un mensaje al asignar valores. Si Si
Si no se especifica
|
Opcional | Booleano |
transport |
Especifica el tipo de transporte del tipo de mensaje de solicitud o respuesta. El valor predeterminado es |
Opcional | Cadena |
type |
Especifica el tipo del nuevo mensaje cuando createNew es true . Los valores válidos son request y response .
El valor predeterminado es |
Opcional | Cadena |
<DisplayName>
Se usa junto con el atributo name
para etiquetar la política en el editor de proxy de la interfaz de usuario de gestión con un nombre diferente que suene más natural.
El elemento <DisplayName>
es común a todas las políticas.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional. Si omite <DisplayName> , se usará el valor del atributo name de la política. |
Tipo | Cadena |
Elemento principal | <PolicyElement> |
Elementos secundarios | Ninguno |
El elemento <DisplayName>
utiliza la siguiente sintaxis:
Sintaxis
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Ejemplo
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
El elemento <DisplayName>
no tiene atributos ni elementos secundarios.
<IgnoreUnresolvedVariables>
Determina si el procesamiento se detiene cuando se encuentra una variable sin resolver.
Valor predeterminado | Falso |
¿Es obligatorio? | Opcional |
Tipo | Booleano |
Elemento principal |
<HTTPModifier>
|
Elementos secundarios | Ninguno |
Asigna el valor true
para ignorar las variables sin resolver y continuar con el procesamiento. De lo contrario,
false
. El valor predeterminado es false
.
Definir <IgnoreUnresolvedVariables>
como true
es diferente de definir continueOnError
de <HTTPModifier>
como true
, ya que se refiere específicamente a la definición y obtención de valores de variables. Si asignas el valor true
a continueOnError
, Apigee ignora todos los errores, no solo los que se producen al usar variables.
El elemento <IgnoreUnresolvedVariables>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo se asigna true
a <IgnoreUnresolvedVariables>
:
<HTTPModifier name="HM-Set-Headers"> <Set> <Headers> <Header name='new-header'>{possibly-defined-variable}<Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </HTTPModifier>
Como <IgnoreUnresolvedVariables>
tiene el valor true
, si no se define la variable possibly-defined-variable
, esta política no generará ningún error.
<Remove>
Elimina encabezados, parámetros de consulta o parámetros de formulario de un mensaje. Una etiqueta vacía elimina todos los parámetros correspondientes, incluidos los encabezados, los parámetros de formulario y los parámetros de consulta.
El mensaje afectado puede ser una solicitud o una respuesta. Para especificar en qué mensaje <Remove>
actúa, usa el elemento <AssignTo>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Tipo complejo |
Elemento principal |
<HTTPModifier>
|
Elementos secundarios |
<FormParams> <Headers> <QueryParams> |
Un caso de uso habitual de <Remove>
es eliminar un parámetro de consulta o un encabezado que contenga información sensible del objeto de solicitud entrante para evitar que se envíe al servidor backend.
El elemento <Remove>
utiliza la siguiente sintaxis:
Sintaxis
<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>
Ejemplo 1
En el siguiente ejemplo se eliminan todos los parámetros de formulario y un parámetro de consulta del objeto request
:
<HTTPModifier name="HM-remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 2
En el siguiente ejemplo se elimina todo de un objeto de mensaje:
<HTTPModifier name="HM-remove-3"> <Remove/> <AssignTo>request</AssignTo> </HTTPModifier>
Normalmente, solo lo harías si fueras a usar el elemento <Set>
para definir algunos valores de sustitución en el mensaje.
<FormParams>
(hijo de <Remove>
)
Quita los parámetros de formulario especificados de la solicitud. Este elemento no tiene ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <FormParam> o matriz vacía |
Elemento principal |
<Remove>
|
Elementos secundarios |
<FormParam> |
El elemento <FormParams>
utiliza la siguiente sintaxis:
Sintaxis
<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>
Ejemplo 1
En el ejemplo siguiente se eliminan tres parámetros de formulario de la solicitud:
<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>
Ejemplo 2
En el siguiente ejemplo se eliminan todos los parámetros de formulario de la solicitud:
<HTTPModifier name="HM-remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 3
Si hay varios parámetros de formulario con el mismo nombre, usa la siguiente sintaxis:
<HTTPModifier name="HM-remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
En este ejemplo se eliminan f1
, f2
y el segundo valor de f3
. Si f3
solo tiene un valor, no se elimina.
Puedes usar <FormParams>
solo si se cumplen los siguientes criterios:
- Tipo de mensaje: solicitud
Content-Type
:application/x-www-form-urlencoded
<Headers>
(hijo de <Remove>
)
Elimina los encabezados HTTP especificados de la solicitud o la respuesta, que se indica en el elemento <AssignTo>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <Header> o matriz vacía |
Elemento principal |
<Remove>
|
Elementos secundarios |
<Header> |
El elemento <Headers>
utiliza la siguiente sintaxis:
Sintaxis
<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>
Ejemplo 1
En el siguiente ejemplo se elimina el encabezado user-agent
de la solicitud:
<HTTPModifier name="HM-remove-one-header"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 2
En el siguiente ejemplo se eliminan todos los encabezados de la solicitud:
<HTTPModifier name="HM-remove-all-headers"> <Remove> <Headers/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 3
Si hay varios encabezados con el mismo nombre, utiliza la siguiente sintaxis:
<HTTPModifier name="HM-remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
En este ejemplo se eliminan h1
, h2
y el segundo valor de h3
de la solicitud. Si h3
solo tiene un valor, no se elimina.
<QueryParams>
(hijo de <Remove>
)
Quita los parámetros de consulta especificados de la solicitud. Este elemento no tiene ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <QueryParam> o matriz vacía |
Elemento principal |
<Remove>
|
Elementos secundarios |
<QueryParam> |
El elemento <QueryParams>
utiliza la siguiente sintaxis:
Sintaxis
<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>
Ejemplo 1
En el siguiente ejemplo se elimina un único parámetro de consulta de la solicitud:
<HTTPModifier name="HM-remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 2
En el siguiente ejemplo se eliminan todos los parámetros de consulta de la solicitud:
<HTTPModifier name="HM-remove-queryparams-2"> &tl;Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 3
Si hay varios parámetros de consulta con el mismo nombre, utiliza la siguiente sintaxis:
<HTTPModifier name="HM-remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
En este ejemplo se eliminan qp1
, qp2
y el segundo valor de qp3
de la solicitud. Si qp3
solo tiene un valor, no se elimina.
Ejemplo 4
En el ejemplo siguiente, se elimina el parámetro de consulta apikey
de la solicitud:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Puedes usar <QueryParams>
solo si se cumplen los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
<Set>
Define la información en el mensaje de solicitud o respuesta, que se especifica mediante el elemento <AssignTo>
. <Set>
sobrescribe los encabezados o los parámetros de consulta o de formulario que ya existen en el mensaje original, o bien añade nuevos si no los hay.
Los encabezados y los parámetros de consulta y de formulario de un mensaje HTTP pueden contener varios valores. Para añadir valores adicionales a un encabezado o un parámetro, utilice el elemento <Add>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Tipo complejo |
Elemento principal |
<HTTPModifier>
|
Elementos secundarios |
<FormParams> <Headers> <Path> <QueryParams> <StatusCode> <Verb> <Version> |
El elemento <Set>
utiliza la siguiente sintaxis:
Sintaxis
<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>
Ejemplo
En el siguiente ejemplo se define un encabezado específico. Cuando esta política se adjunta en el flujo de solicitudes, permitirá que el sistema upstream reciba un encabezado adicional que no se haya incluido en la solicitud entrante original.
<HTTPModifier name="HM-Set-Header"> <Set> <Headers> <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header> </Headers> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
<FormParams>
(hijo de <Set>
)
Sobrescribe los parámetros de formulario de una solicitud y los sustituye por los nuevos valores que especifiques con este elemento. Este elemento no tiene ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <FormParam> |
Elemento principal |
<Set>
|
Elementos secundarios |
<FormParam> |
El elemento <FormParams>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> </Set> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo se asigna el valor de la variable request.header.myparam
a un parámetro de formulario llamado myparam
en una solicitud personalizada nueva:
<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>
Puedes usar <FormParams>
solo si se cumplen los siguientes criterios:
- Verbo HTTP:
POST
- Tipo de mensaje: solicitud
Si define parámetros de formulario vacíos en su política (<Add><FormParams/></Add>
), la política no añade ningún parámetro de formulario. Es lo mismo que omitir <FormParams>
.
<Set>
cambia el Content-Type
del mensaje a
application/x-www-form-urlencoded
antes de enviarlo al endpoint de destino.
<Headers>
(hijo de <Set>
)
Sobrescribe los encabezados HTTP que ya haya en la solicitud o la respuesta, que se especifica mediante el elemento <AssignTo>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <Header> |
Elemento principal |
<Set>
|
Elementos secundarios |
<Header> |
El elemento <Headers>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Set> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo, se asigna al encabezado x-ratelimit-remaining
el valor de la variable 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>
Si define encabezados vacíos en su política (<Set><Headers/></Set>
), la política no definirá ningún encabezado. Esto tendrá el mismo efecto que omitir <Headers>
.
<Path>
(hijo de <Set>
)
<QueryParams>
(hijo de <Set>
)
Sobrescribe los parámetros de consulta de la solicitud con nuevos valores. Este elemento no tiene ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Matriz de elementos <QueryParam> |
Elemento principal |
<Set>
|
Elementos secundarios |
<QueryParam> |
El elemento <QueryParams>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Set> </HTTPModifier>
Ejemplo 1
En el ejemplo siguiente, se asigna al parámetro de consulta address
el valor de la variable request.header.address
:
<HTTPModifier name="HM-set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </HTTPModifier>
Puedes usar <QueryParams>
solo si se cumplen los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
Si define parámetros de consulta vacíos en su política (<Set><QueryParams/></Set>
), la política no definirá ningún parámetro de consulta. Es lo mismo que omitir <QueryParams>
.
<StatusCode>
(hijo de <Set>
)
Asigna el código de estado a la respuesta. Este elemento no tiene ningún efecto en una solicitud.
Valor predeterminado | "200" (cuando el atributo createNew de <AssignTo> se define como "true") |
¿Es obligatorio? | Opcional |
Tipo | Cadena o VARIABLE |
Elemento principal |
<Set>
|
Elementos secundarios | Ninguno |
El elemento <StatusCode>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> </Set> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo se define un código de estado sencillo:
<HTTPModifier name="HM-set-statuscode-404"> <Set> <StatusCode>404<<StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Ejemplo 2
El contenido de <StatusCode>
se trata como una plantilla de mensaje. Esto significa que el nombre de una variable entre llaves se sustituirá en tiempo de ejecución por el valor de la variable a la que se hace referencia, como se muestra en el siguiente ejemplo:
<HTTPModifier name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Puedes usar <StatusCode>
solo si se cumplen los siguientes criterios:
- Tipo de mensaje: Response
<Verb>
(hijo de <Set>
)
Define el verbo HTTP en la solicitud. Este elemento no tiene ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Cadena o VARIABLE |
Elemento principal |
<Set>
|
Elementos secundarios | Ninguno |
El elemento <Verb>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo se define un verbo simple en la solicitud:
<HTTPModifier name="HM-set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Ejemplo 2
El contenido de <Verb>
se trata como una plantilla de mensaje. Esto significa que un nombre de variable entre llaves se sustituirá en tiempo de ejecución por el valor de la variable a la que se hace referencia.
En el siguiente ejemplo se usa una variable para rellenar un verbo:
<HTTPModifier name="HM-set-verb-to-dynamic-value"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Puedes usar <Verb>
solo si se cumplen los siguientes criterios:
- Tipo de mensaje: solicitud
<Version>
(hijo de <Set>
)
Define la versión HTTP de una solicitud. Este elemento no tiene ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Cadena o VARIABLE |
Elemento principal |
<Set>
|
Elementos secundarios | Ninguno |
El elemento <Version>
utiliza la siguiente sintaxis:
Sintaxis
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Ejemplo 1
En el siguiente ejemplo se asigna el número de versión 1.1
:
<HTTPModifier name="HM-set-version-1"> <Set> <Version>1.1</Version> </Set> </HTTPModifier>
Ejemplo 2
En el siguiente ejemplo se usa una variable entre llaves para definir el número de versión:
<HTTPModifier name="HM-set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
El contenido de <Version>
se trata como una plantilla de mensaje. Esto significa que el nombre de una variable entre llaves se sustituirá en tiempo de ejecución por el valor de la variable a la que se hace referencia.
Puedes usar <Version>
solo si se cumplen los siguientes criterios:
- Tipo de mensaje: solicitud
Crear mensajes de solicitud personalizados
Puede usar HTTPModifier para crear un mensaje de solicitud personalizado. Después de crear una solicitud personalizada, puedes usarla de las siguientes formas:
- Acceder a sus variables en otras políticas
- Pasarlo a un servicio externo
Para crear un mensaje de solicitud personalizado, usa el elemento <AssignTo>
en tu política HTTPModifier. Asigna el valor true
a createNew
y especifica el nombre del nuevo mensaje en el cuerpo del elemento, tal como se muestra en el siguiente ejemplo:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
De forma predeterminada, Apigee no hace nada con el mensaje de solicitud personalizado. Después de crearlo, Apigee continuará con el flujo con la solicitud original. Para usar la solicitud personalizada, añade una política que utilice el mensaje de solicitud y haz referencia explícita al mensaje de solicitud recién creado en la configuración de esa política. De esta forma, podrás enviar la solicitud personalizada a un endpoint de servicio externo.
En los siguientes ejemplos se crean mensajes de solicitud personalizados:
Ejemplo 1
En el siguiente ejemplo se crea un objeto de solicitud personalizado 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>
Este ejemplo:
- Crea un objeto de mensaje de solicitud llamado
MyCustomRequest
. - En MyCustomRequest, esta política:
- Asigna al parámetro de consulta
address
del mensaje personalizado el valor del parámetro de consultaaddy
de la solicitud entrante. - Define el verbo HTTP en
GET
.
- Asigna al parámetro de consulta
- Asigna el valor
false
a<IgnoreUnresolvedVariables>
. Cuando<IgnoreUnresolvedVariables>
esfalse
, si una de las variables a las que se hace referencia en la configuración de la política no existe, Apigee pasará al estado de error en el flujo de la API.
Ejemplo 2
A continuación, se muestra otro ejemplo de cómo crear un objeto de solicitud personalizado con HTTPModifier:
<HTTPModifier name="HTTPModifier-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> </Set> </HTTPModifier>
En este ejemplo se crea una solicitud personalizada llamada partner.request
. A continuación, asigna el
<Verb>
a la nueva solicitud.
Puedes acceder a las distintas propiedades de un mensaje personalizado en otra política HTTPModifier que se produzca más adelante en el flujo. En el siguiente ejemplo, se obtiene el valor de un encabezado de una respuesta personalizada con nombre y se coloca en un encabezado nuevo del mensaje de solicitud:
<HTTPModifier name="HM-Set-Header"> <AssignTo>request</AssignTo> <Set> <Headers> <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header> </Headers> </Set> </HTTPModifier>
Códigos de error
En esta sección se describen los códigos de error y los mensajes de error que devuelve Apigee, así como las variables de error que define, cuando esta política activa un error. Es importante que conozcas esta información si vas a desarrollar reglas de errores para gestionarlos. Para obtener más información, consulta Qué debes saber sobre los errores de políticas y Cómo gestionar los fallos.
Errores de tiempo de ejecución
Estos errores pueden producirse cuando se ejecuta la política.
Código de fallo | Estado de HTTP | Causa | Solucionar |
---|---|---|---|
entities.UnresolvedVariable |
500 |
La variable de plantilla de mensaje no está definida o está fuera del ámbito. | |
steps.httpmodifier.InvalidStatusCode |
500 |
El valor resuelto del código de estado no es válido. Consulta la cadena de errores para obtener más información. | build |
Errores de implementación
Estos errores pueden producirse al implementar un proxy que contenga esta política.
Nombre del error | Causa | Solucionar |
---|---|---|
InvalidIndex |
Si el índice especificado en los elementos <Remove> de la política HTTPModifier es 0 o un número negativo, no se podrá implementar el proxy de API. |
build |
Variables de error
Estas variables se definen cuando esta política activa un error en el tiempo de ejecución. Para obtener más información, consulta Qué debes saber sobre los errores de las políticas.
Variables | Dónde | Ejemplo |
---|---|---|
httpmodifier.POLICY_NAME.failed |
POLICY_NAME es el nombre de la política especificado por el usuario que ha provocado el error. | httpmodifier.HM-SetResponse.failed = true |
Ejemplo de respuesta de error
{ "fault":{ "detail":{ "errorcode":"steps.httpmodifier.InvalidStatusCode" }, "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request" } }
Regla de error de ejemplo
<FaultRule name="HTTPModifier Faults"> <Step> <Name>HM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "InvalidStatusCode")</Condition> </Step> <Condition>(httpmodifier.failed = true)</Condition> </FaultRule>
Esquemas
Cada tipo de política se define mediante un esquema XML (.xsd
). Para obtener información, puede consultar los esquemas de políticas en GitHub.