Qué
La política HTTPModifier puede cambiar un mensaje existente de respuesta o de solicitud.
La política te permite realizar las siguientes acciones en esos mensajes:
- Agregar nuevos parámetros de formulario, encabezados o parámetros de búsqueda a un mensaje
- Quitar encabezados, parámetros de consulta y parámetros de formulario de un mensaje
- Establecer el valor de las propiedades existentes en un mensaje
Con HTTPModifier, puedes agregar, cambiar o quitar propiedades de la solicitud o la respuesta. De forma alternativa, puedes usar HTTPModifier para crear una solicitud personalizada o un mensaje de respuesta y pasarlo a un destino alternativo, como se describe en Crea mensajes de solicitud personalizados.
La política HTTPModifier puede crear variables de flujo con los siguientes elementos secundarios:
El orden en el que organizas los elementos de las instancias <Add>
, <Set>
y <Remove>
es importante. La política ejecuta esas acciones en el orden en que aparecen en la configuración de la política. Si necesitas quitar todos los encabezados y, luego, establecer un encabezado específico, debes incluir el elemento <Remove>
antes del elemento <Set>
.
Esta 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 con 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, a continuación |
¿Es obligatorio? | Obligatorio |
Tipo | Objeto complejo |
Elemento principal | N/A |
Elementos secundarios |
<Add> <AssignTo> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
El elemento <HTTPModifier>
usa la siguiente sintaxis:
Sintaxis
El elemento <HTTPModifier>
usa 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 muestra la configuración predeterminada cuando agregas una política HTTPModifier a tu flujo en la IU 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 de HTTPModifier en la IU de Apigee, la plantilla contiene stubs para todas las operaciones posibles. Por lo general, debes seleccionar qué operaciones quieres realizar con esta política y quitas el resto de los elementos secundarios. Por ejemplo, si deseas realizar una operación de agregació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 | Predeterminada | (obligatorio) | Descripción |
---|---|---|---|
name |
N/A | Obligatorio |
El nombre interno de la política. El valor del atributo De forma opcional, usa el elemento |
continueOnError |
falso | Opcional | Configúralo como false para mostrar un error cuando una política falla. Este es el comportamiento previsto para la mayoría de las políticas. Configúralo como true para continuar con la ejecución del flujo incluso después de que una política falle. También consulta:
|
enabled |
true | Opcional | Configúralo como true para aplicar la política. Configúralo como false para desactivar la política. La política no se aplicará, incluso si permanece conectada a un flujo. |
async |
falso | Obsoleta | Este atributo dejó de estar disponible. |
En la siguiente tabla, se proporciona una descripción de alto nivel de los elementos secundarios de <HTTPModifier>
.
Elemento secundario | ¿Es obligatorio? | Descripción |
---|---|---|
Operaciones comunes | ||
<Add> |
Opcional | Agrega información al el objeto de mensaje que especifica el elemento <AssignTo> .
Para reemplazar encabezados o parámetros existentes, usa el elemento |
<Remove> |
Opcional | Borra los elementos especificados de la variable de mensaje especificada en el elemento <AssignTo> . |
<Set> |
Opcional | Reemplaza los valores de las propiedades existentes en la solicitud o respuesta, que se especifica con 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 puede ser un mensaje personalizado nuevo. |
<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 siguientes secciones.
Ejemplos
En los siguientes ejemplos, se muestran algunas de las formas en las que puedes usar la política de HTTPModifier:
1: Agrega encabezados
En el siguiente ejemplo, se agrega un encabezado a la solicitud con el elemento <Add>
. La variable VerifyAPIKey en este ejemplo se genera mediante 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: Modifica la respuesta
En el siguiente ejemplo, se modifica un objeto de respuesta existente cuando se le agrega 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, puedes modificar un mensaje de respuesta existente si agregas un encabezado HTTP.
Debido a que este ejemplo especifica response
como el nombre de la variable en el elemento <AssignTo>
, esta política modifica el objeto de respuesta que se configuró en un principio con los datos que muestra el servidor de destino.
El encabezado HTTP que se agrega al mensaje de respuesta que proporciona esta política se deriva de una variable propagada 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 extrajeron de la caché o no. Configurar encabezados en la respuesta puede ser útil para la depuración y la solución de problemas.
3: Quita parámetros de búsqueda
En el siguiente ejemplo, se quita el parámetro de búsqueda apikey
de la solicitud:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Se recomienda quitar el parámetro de búsqueda apikey
del mensaje de la solicitud cuando uses la política VerifyAPIKey para la autenticación de usuarios. Debes hacer esto para impedir que la información de clave sensible se pase al destino del backend.
Referencia del elemento secundario
En esta sección, se describen los elementos secundarios de <HTTPModifier>
.
<Add>
Agrega información a la solicitud o respuesta, que se especifica mediante el elemento <AssignTo>
.
El elemento <Add>
agrega propiedades nuevas en el mensaje que no existe en el mensaje original. Ten en cuenta que <Set>
también proporciona esta funcionalidad. Para cambiar los valores de las propiedades existentes, usa el elemento <Set>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Tipo complejo |
Elemento principal |
<HTTPModifier>
|
Elementos secundarios |
<FormParams> <Headers> <QueryParams> |
El elemento <Add>
usa 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 ejemplo siguiente, se usa el elemento <FormParams>
para obtener los valores de tres parámetros de string de consulta de la solicitud inicial y configurarlos como parámetros de forma en la solicitud de extremo 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 agregar un encabezado partner-id
a la solicitud que se enviará al extremo 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 agregar un solo parámetro de búsqueda 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 flujo previo de la solicitud. Si examinas 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 reemplazo de strings dinámicas, conocida como plantilla de mensajes.
<FormParams>
(secundario de <Add>
)
Agrega parámetros nuevos del formulario al mensaje de la solicitud. Este elemento no tiene efecto en un mensaje de respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <FormParam> |
Elemento principal |
<Add>
|
Elementos secundarios |
<FormParam> |
El elemento <FormParams>
usa 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 agrega un solo 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
y se lo agrega a la solicitud como un parámetro de formulario y, luego, se quita 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 un objetivo con <AssignTo>
. Esta política solo agrega el parámetro a la solicitud.
Ejemplo 3
En el siguiente ejemplo, se agregan 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 la string de consulta de la solicitud original y se los agrega como parámetros de formulario con diferentes nombres. Luego, quita los parámetros de consulta originales. Apigee enviará la solicitud modificada al extremo 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 con codificación URL, que se pasaron originalmente como parámetros de string de consulta:
username=nick&zip_code=90210&default_language=en
Solo puedes usar <FormParams>
cuando se cumplan los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
- Uno (o ambos) de los siguientes elementos:
- Datos del formulario: establecidos en algún valor o
""
(la cadena vacía). Por ejemplo, concurl
, agrega-d ""
a tu solicitud. - Encabezado
Content-Length
: Se establece en 0 (si no hay datos en la solicitud original; de lo contrario, la longitud actual, en bytes). Por ejemplo, concurl
, agrega-H "Content-Length: 0"
a tu solicitud.
- Datos del formulario: establecidos en algún 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 agregas <FormParams>
, Apigee establece el encabezado Content-Type
de la solicitud en application/x-www-form-urlencoded
antes de enviar el mensaje al servicio de destino.
<Headers>
(secundario de <Add>
)
Agrega encabezados nuevos a la solicitud o respuesta especificadas, que se especifica mediante el elemento <AssignTo>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <Header> |
Elemento principal |
<Add>
|
Elementos secundarios |
<Header> |
El elemento <Headers>
usa 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 agrega el 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>
(secundario de <Add>
)
Agrega nuevos parámetros de búsqueda a la solicitud. Este elemento no tiene efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <QueryParam> |
Elemento principal |
<Add>
|
Elementos secundarios |
<QueryParam> |
El elemento <QueryParams>
usa 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 siguiente ejemplo, se agrega el parámetro de búsqueda 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>
Solo puedes usar <QueryParams>
cuando se cumplan los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
Además, solo puedes establecer parámetros de búsqueda cuando el atributo type
del elemento <AssignTo>
es un mensaje de solicitud. Configurarlos en la respuesta no causa ningún efecto.
Si defines un arreglo vacío de parámetros de búsqueda en tu política (<Add><QueryParams/></Add>
), la política no agrega ningún parámetro de búsqueda. Esto es lo mismo que omitir <QueryParams>
.
<AssignTo>
Determina en qué objeto funciona la política HTTPModifier. Las opciones son las siguientes:
- Mensaje de la solicitud: La
request
que recibe el proxy de API - Mensaje de respuesta: La
response
que muestra 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 en el que actúa la política HTTPModifier.
Por ejemplo, no puedes usar <Add>
o <Set>
para agregar o cambiar parámetros de búsqueda (<QueryParams>
) o parámetros de formulario (<FormParams>
) en la respuesta. Solo puedes manipular parámetros de búsqueda y parámetros de formulario en la solicitud.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | String |
Elemento principal |
<HTTPModifier>
|
Elementos secundarios | Ninguno |
Si no especificas <AssignTo>
o si especificas el elemento <AssignTo>
, pero no especificas un valor de texto para el elemento, la política actúa sobre la solicitud o respuesta predeterminada, que es lo que se muestra a continuación: en función de dónde se ejecuta la política. Si la política se ejecuta en el flujo de la solicitud, afecta el mensaje de la solicitud. Si se ejecuta en el flujo de respuesta, la política afecta la respuesta de forma predeterminada.
El elemento <AssignTo>
usa 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 de <AssignTo>
. Esto implica que la política actuará sobre el mensaje request
o response
, según dónde se ejecute la política.
<HTTPModifier name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/>-- no-op --> ... </HTTPModifier>
Si especificas createNew="false"
y no proporcionas un nombre de mensaje de forma explícita, los otros atributos de <AssignTo>
son irrelevantes. En este caso, es posible que desees omitir el elemento <AssignTo>
por completo.
Ejemplo 2
En el siguiente ejemplo, se crea un objeto de solicitud nuevo y se reemplaza el objeto existente:
<HTTPModifier name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> ... </HTTPModifier>
Cuando creas un objeto de solicitud o respuesta nuevo, los otros elementos de la política HTTPModifier (como <Add>
y <Set>
) actúan en ese objeto de solicitud nuevo.
Puedes acceder al nuevo objeto de solicitud en otras políticas más adelante en el flujo o enviar el objeto de solicitud nuevo a un servicio externo con una política ServiceCallout.
Ejemplo 3
En el siguiente ejemplo, se crea un objeto de solicitud nuevo MyRequestObject
:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Cuando creas un objeto de solicitud o respuesta nuevo, los otros elementos de la política HTTPModifier (como <Add>
y <Set>
) actúan en ese objeto de solicitud nuevo.
Puedes acceder al nuevo objeto de solicitud en otras políticas más adelante en el flujo o enviar el objeto de solicitud nuevo 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 nuevo cuando asigna valores. Si es Si es
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 | String |
type |
Especifica el tipo de mensaje nuevo, cuando createNew es true . Los valores válidos son request o response .
El valor predeterminado es |
Opcional | String |
<DisplayName>
Se usan además del atributo name
para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.
El elemento <DisplayName>
es común a todas las políticas.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional. Si omites <DisplayName> , se usa el valor del atributo name de la política. |
Tipo | String |
Elemento principal | <PolicyElement> |
Elementos secundarios | Ninguno |
El elemento <DisplayName>
usa 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 |
Configúralo como true
para ignorar las variables sin resolver y continuar con el procesamiento, de lo contrario, false
. El valor predeterminado es false
.
Configurar <IgnoreUnresolvedVariables>
como true
es diferente a configurar el parámetro continueOnError
de <HTTPModifier>
como true
puesto que es específico de la configuración y la obtención de valores de variables. Si configuras continueOnError
como true
, Apigee ignorará todos los errores, no solo los errores detectados cuando se usan variables.
El elemento <IgnoreUnresolvedVariables>
usa 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 configura <IgnoreUnresolvedVariables>
como true
:
<HTTPModifier name="HM-Set-Headers"> <Set> <Headers> <Header name='new-header'>{possibly-defined-variable}<Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </HTTPModifier>
Debido a que <IgnoreUnresolvedVariables>
está configurado como true
, si la variable possibly-defined-variable
no está definida, esta política no arrojará una falla.
<Remove>
Quita los encabezados, los parámetros de búsqueda o los parámetros de formulario de un mensaje. Una etiqueta vacía quita todos los parámetros correspondientes, incluidos encabezados, formparams y queryparams.
El mensaje afectado puede ser una solicitud o una respuesta. Especifica en qué mensaje actúa <Remove>
mediante 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 común para <Remove>
es borrar un parámetro de consulta o encabezado que contiene información sensible del objeto de solicitud entrante para evitar pasarlo al servidor de backend.
El elemento <Remove>
usa 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 quitan 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 quita todo del objeto de mensaje:
<HTTPModifier name="HM-remove-3"> <Remove/> <AssignTo>request</AssignTo> </HTTPModifier>
Por lo general, lo haces solo si usarías el elemento <Set>
para configurar algunos valores de reemplazo en el mensaje.
<FormParams>
(secundario de <Remove>
)
Quita los parámetros de búsqueda especificados de la solicitud. Este elemento no causa ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <FormParam> o un arreglo vacío |
Elemento principal |
<Remove>
|
Elementos secundarios |
<FormParam> |
El elemento <FormParams>
usa 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 siguiente ejemplo, se quitan tres parámetros de búsqueda 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 quitan todos los parámetros de búsqueda 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, utiliza 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 quitan f1
, f2
y el segundo valor de f3
. Si f3
tiene solo un valor, no se quitará.
Solo puedes usar <FormParams>
cuando se cumplan los siguientes criterios:
- Tipo de mensaje: solicitud
Content-Type
:application/x-www-form-urlencoded
<Headers>
(secundario de <Remove>
)
Quita los encabezados HTTP especificados de la solicitud o respuesta, que se especifica mediante el elemento <AssignTo>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <Header> o un arreglo vacío |
Elemento principal |
<Remove>
|
Elementos secundarios |
<Header> |
El elemento <Headers>
usa 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 quita 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 quitan 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, usa 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 quitan h1
, h2
y el segundo valor de h3
de la solicitud. Si h3
tiene solo un valor, no se quitará.
<QueryParams>
(secundario de <Remove>
)
Quita los parámetros de búsqueda especificados de la solicitud. Este elemento no causa ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <QueryParam> o un arreglo vacío |
Elemento principal |
<Remove>
|
Elementos secundarios |
<QueryParam> |
El elemento <QueryParams>
usa 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 quita un solo parámetro de búsqueda 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 quitan todos los parámetros de búsqueda 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 búsqueda con el mismo nombre, usa 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 quitan qp1
, qp2
y el segundo valor de qp3
de la solicitud. Si qp3
tiene solo un valor, no se quitará.
Ejemplo 4
En el siguiente ejemplo, se quita el parámetro de búsqueda apikey
de la solicitud:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Solo puedes usar <QueryParams>
cuando se cumplan los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
<Set>
Establece la información en la solicitud o mensaje de respuesta, que se especifica mediante el elemento <AssignTo>
. <Set>
reemplaza los encabezados o los parámetros de consulta o formulario que ya existen en el mensaje original o agrega nuevos si no existen.
Los encabezados y los parámetros de consulta y formulario en un mensaje HTTP pueden contener varios valores. Para agregar valores adicionales a un encabezado o parámetro, usa el elemento <Add>
en su lugar.
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>
usa 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 establece un encabezado específico. Cuando se adjunte esta política en el flujo de solicitudes, permitirá que el sistema ascendente reciba un encabezado adicional que no se incluyó en la solicitud de entrada 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>
(secundario de <Set>
)
Reemplaza los parámetros de formulario existentes en una solicitud y los reemplaza por los nuevos valores que especificas con este elemento. Este elemento no tiene efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <FormParam> |
Elemento principal |
<Set>
|
Elementos secundarios |
<FormParam> |
El elemento <FormParams>
usa 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 configura un parámetro de formulario llamado myparam
para el valor de la variable request.header.myparam
en una nueva solicitud personalizada:
<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>
Solo puedes usar <FormParams>
cuando se cumplan los siguientes criterios:
- Verbo HTTP
POST
- Tipo de mensaje: solicitud
Si defines parámetros de formulario vacíos en tu política (<Add><FormParams/></Add>
), la política no agregará ningún parámetro de formulario. Esto es lo mismo que omitir <FormParams>
.
<Set>
cambia el Content-Type
del mensaje a application/x-www-form-urlencoded
antes de enviarlo al extremo de destino.
<Headers>
(secundario de <Set>
)
Reemplaza los encabezados HTTP existentes en la solicitud o respuesta, que se especifica mediante el elemento <AssignTo>
.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <Header> |
Elemento principal |
<Set>
|
Elementos secundarios |
<Header> |
El elemento <Headers>
usa 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 establece el encabezado x-ratelimit-remaining
en 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 defines encabezados vacíos en tu política (<Set><Headers/></Set>
), la política no agregará encabezados. Esto tendrá el mismo efecto que omitir <Headers>
.
<Path>
(secundario de <Set>
)
<QueryParams>
(secundario de <Set>
)
Reemplaza los parámetros de búsqueda existentes en la solicitud con valores nuevos. Este elemento no causa ningún efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | Arreglo de elementos <QueryParam> |
Elemento principal |
<Set>
|
Elementos secundarios |
<QueryParam> |
El elemento <QueryParams>
usa 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 siguiente ejemplo, se establece el parámetro de búsqueda address
en 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>
Solo puedes usar <QueryParams>
cuando se cumplan los siguientes criterios:
- Verbos HTTP:
GET
,POST
- Tipo de mensaje: solicitud
Si defines parámetros de búsqueda vacíos en tu política (<Set><QueryParams/></Set>
), la política no establece ningún parámetro de consulta. Esto es lo mismo que omitir <QueryParams>
.
<StatusCode>
(secundario de <Set>
)
Establece el código de estado en la respuesta. Este elemento no causa ningún efecto en una solicitud.
Valor predeterminado | “200” (cuando el atributo createNew de <AssignTo> se configura como “true”) |
¿Es obligatorio? | Opcional |
Tipo | String o VARIABLE |
Elemento principal |
<Set>
|
Elementos secundarios | Ninguno |
El elemento <StatusCode>
usa 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 configura un código de estado simple:
<HTTPModifier name="HM-set-statuscode-404"> <Set> <StatusCode>404<<StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Ejemplo 2
El contenido de <StatusCode>
se considera una plantilla de mensaje. Esto significa que un nombre de variable entre llaves se reemplazará en el entorno 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>
Solo puedes usar <StatusCode>
cuando se cumplan los siguientes criterios:
- Tipo de mensaje: Respuesta
<Verb>
(secundario de <Set>
)
Establece el verbo HTTP en la solicitud. Este elemento no tiene efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | String o VARIABLE |
Elemento principal |
<Set>
|
Elementos secundarios | Ninguno |
El elemento <Verb>
usa 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 configura 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 considera una plantilla de mensaje. Esto significa que un nombre de variable entre llaves se reemplazará en el entorno de ejecución por el valor de la variable a la que se hace referencia.
En el siguiente ejemplo, se usa una variable para propagar un verbo:
<HTTPModifier name="HM-set-verb-to-dynamic-value"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
Solo puedes usar <Verb>
cuando se cumplan los siguientes criterios:
- Tipo de mensaje: solicitud
<Version>
(secundario de <Set>
)
Establece la versión HTTP en una solicitud. Este elemento no tiene efecto en una respuesta.
Valor predeterminado | N/A |
¿Es obligatorio? | Opcional |
Tipo | String o VARIABLE |
Elemento principal |
<Set>
|
Elementos secundarios | Ninguno |
El elemento <Version>
usa 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 establece el número de versión en 1.1
:
<HTTPModifier name="HM-set-version-1"> <Set> <Version>1.1</Version> </Set> </HTTPModifier>
Ejemplo 2
El siguiente comando usa una variable entre llaves para establecer 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 considera una plantilla de mensaje. Esto significa que un nombre de variable entre llaves se reemplazará en el entorno de ejecución por el valor de la variable a la que se hace referencia.
Solo puedes usar <Version>
cuando se cumplan los siguientes criterios:
- Tipo de mensaje: solicitud
Crea mensajes de solicitud personalizados
Puedes usar HTTPModifier para crear un mensaje de solicitud personalizado. Después de crear una solicitud personalizada, puedes usarla de las maneras siguientes:
- Accede a sus variables en otras políticas
- Pásalo a un servicio externo
Para crear un mensaje de solicitud personalizado, usa el elemento <AssignTo>
en tu política de HTTPModifier. Configura createNew
como true
y especifica el nombre del mensaje nuevo en el cuerpo del elemento, como se muestra en el siguiente ejemplo:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Según la configuración predeterminada, Apigee no hace nada con el mensaje de solicitud personalizado. Después de crearla, Apigee pasará a través del flujo con la solicitud original. Para usar la solicitud personalizada, agrega una política que use el mensaje de solicitud y haga referencia explícita al mensaje de solicitud recién creado en la configuración de esa política. Esto te permitirá pasar la solicitud personalizada a un extremo 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>
En este ejemplo, se dan las siguientes situaciones:
- Crea un nuevo objeto de mensaje de solicitud llamado
MyCustomRequest
. - En MyCustomRequest, esta política:
- Configura el parámetro de búsqueda
address
en el mensaje personalizado con el valor del parámetro de búsquedaaddy
de la solicitud entrante. - Establece el verbo HTTP como
GET
.
- Configura el parámetro de búsqueda
- Establece
<IgnoreUnresolvedVariables>
enfalse
. 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 ingresará un estado de falla en el flujo de la API.
Ejemplo 2
A continuación, se muestra otro ejemplo que muestra 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 nueva llamada partner.request
. Luego, configura <Verb>
en la solicitud nueva.
Puedes acceder a las diversas propiedades de un mensaje personalizado en otra política de 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 en el 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 falla y los mensajes de error que se muestran, y las variables de falla que establece Apigee cuando esta política activa un error. Esta información es importante para saber si estás desarrollando reglas de fallas con el propósito de manejar fallas. Para obtener más información, consulta Qué debes saber sobre los errores de políticas y Cómo solucionar fallas.
Errores de entorno de ejecución
Estos errores pueden producirse cuando se ejecuta la política.
Código de falla | Estado de HTTP | Causa | Corregir |
---|---|---|---|
entities.UnresolvedVariable |
500 |
Variable de plantilla de mensaje sin definir o fuera del alcance. | |
steps.httpmodifier.InvalidStatusCode |
500 |
El valor resuelto del código de estado no es válido. Consulta la cadena del error para obtener más información. | build |
Errores en la implementación
Estos errores pueden generarse cuando implementas un proxy que contiene esta política.
Nombre del error | Causa | Corregir |
---|---|---|
InvalidIndex |
Si el índice especificado en los elementos <Remove> de la política de HTTPModifier es 0 o un número negativo, la implementación del proxy de API falla. |
build |
Variables con fallas
Estas variables se configuran cuando esta política activa un error en el entorno de ejecución. Para obtener más información, consulta Qué debes saber sobre los errores de la política.
Variables | Donde | Ejemplo |
---|---|---|
httpmodifier.POLICY_NAME.failed |
POLICY_NAME es el nombre especificado por el usuario de la política que generó la falla. | 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" } }
Ejemplo de regla de falla
<FaultRule name="HTTPModifier Faults"> <Step> <Name>HM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "InvalidStatusCode")</Condition> </Step> <Condition>(httpmodifier.failed = true)</Condition> </FaultRule>
Esquemas
Un esquema XML (.xsd
) define cada tipo de política. Como referencia,
los esquemas de políticas
están disponibles en GitHub.