Política ServiceCallout

Estás viendo la documentación de Apigee X.
Consulta la documentación de Apigee Edge.

ícono de política

Qué

La política ServiceCallout te permite llamar a otro servicio desde tu flujo de proxy de API. Puedes hacer textos destacados para un servicio externo (como un extremo de servicio de RESTful externo) o servicios internos (como un proxy de API en la misma organización y entorno).

  • En un caso de uso externo, conviertes un texto destacado en una API de terceros que es externa a tu proxy. La respuesta de la API de terceros se analiza y se inserta en el mensaje de respuesta de la API, enriquece y combina los datos para los usuarios finales de la app. También puedes realizar una solicitud mediante la política ServiceCallout en el flujo de solicitud y, luego, pasar la información en la respuesta al TargetEndpoint del proxy de API.
  • En otro caso de uso, debes llamar a un proxy que se encuentra en la misma organización y entorno como desde el que llamas. Por ejemplo, puede resultarte útil cuando tienes un proxy que ofrece alguna funcionalidad discreta de bajo nivel que consumirán uno o más proxies. Por ejemplo, un proxy que expone operaciones de creación, lectura, actualización y eliminación con un almacén de datos de backend puede ser el proxy de destino para varios otros proxies que exponen los datos a los clientes.

La política admite solicitudes a través de HTTP y HTTPS.

Ejemplos

Llamada local a un proxy interno

<LocalTargetConnection>
    <APIProxy>data-manager</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

En este ejemplo, se crea un texto destacado en un proxy de API local (es decir, uno en la misma organización y entorno) llamado data-manager, que especifica su extremo proxy cuyo nombre es default.

URL como una variable

<HTTPTargetConnection>
    <URL>http://example.com/{request.myResourcePath}</URL>
</HTTPTargetConnection>

En este ejemplo, se usa una variable en la URL para propagar de forma dinámica la URL de destino. La parte del protocolo de la URL, http://, no se puede especificar mediante una variable. Además, debes usar variables separadas para la parte del dominio de la URL y el resto de la URL.

Geocodificación y definición de solicitudes de Google

<ServiceCallout name="ServiceCallout-GeocodingRequest1">
    <DisplayName>Inline request message</DisplayName>
    <Request variable="authenticationRequest">
      <Set>
        <QueryParams>
          <QueryParam name="address">{request.queryparam.postalcode}</QueryParam>
          <QueryParam name="region">{request.queryparam.country}</QueryParam>
          <QueryParam name="sensor">false</QueryParam>
        </QueryParams>
      </Set>
    </Request>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>
http://maps.googleapis.com/maps/api/geocode/json

En lugar de usar una política como la política AssignMessage para crear el objeto de solicitud, puedes definirlo directamente en la política ServiceCallout. En este ejemplo, la política ServiceCallout establece los valores de tres parámetros de consulta que se pasan al servicio externo. Puedes crear un mensaje de solicitud completo en la política ServiceCallout que especifica una carga útil, un tipo de codificación, como application/xml, encabezados, parámetros de forma, etcétera.

A continuación, se muestra otro ejemplo en el que se realiza la solicitud antes de que alcance la política ServiceCallout.

<ServiceCallout name="ServiceCallout-GeocodingRequest2">
    <Request clearPayload="false" variable="GeocodingRequest"/>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>

El contenido del mensaje de la solicitud se extrae de una variable llamada GeocodingRequest (que se podría propagar, por ejemplo, a través de una política AssignMessage). El mensaje de respuesta se asigna a la variable GeocodingResponse, en la que se encuentra disponible para que la analice una política ExtractVariables o el código personalizado escrito en JavaScript o Java. La política espera 30 segundos para la respuesta de la API de geocodificación de Google antes de que se agote el tiempo de espera.

Llama a los servidores de destino

<ServiceCallout async="false" continueOnError="false" enabled="true" name="service-callout">
    <DisplayName>service-callout</DisplayName>
    <Properties/>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    </Request>
    <Response>myResponse</Response>
    <HTTPTargetConnection>
        <LoadBalancer>
            <Algorithm>RoundRobin</Algorithm>
            <Server name="httpbin"/>
            <Server name="yahoo"/>
        </LoadBalancer>
        <Path>/get</Path>
    </HTTPTargetConnection>
</ServiceCallout>

Esta política usa el atributo LoadBalancer para llamar a los servidores de destino y realizar el balanceo de cargas entre ellos. En este ejemplo, la carga se distribuye en dos servidores de destino llamados httpbin y yahoo. Si deseas obtener información para configurar los servidores de destino para tu proxy y configurar el balanceo de cargas, consulta Balanceo de cargas entre servidores de backend.


Información sobre la política ServiceCallout

Hay muchas situaciones en las que puedes usar una política ServiceCallout en tu proxy de API. Por ejemplo, puedes configurar un proxy de API para realizar llamadas a un servicio externo a fin de entregar datos de ubicación geográfica, opiniones de los clientes, elementos del catálogo minorista de un socio, etcétera.

Por lo general, un texto destacado se usa con otras dos políticas: AssignMessage y ExtractVariables.

  • Solicitud: AssignMessage propaga el mensaje de solicitud enviado al servicio remoto.
  • Respuesta: ExtractVariables analiza la respuesta y extrae contenido específico.

La composición típica de la política ServiceCallout incluye las siguientes políticas:

  1. Política AssignMessage: Crea un mensaje de solicitud, propaga encabezados HTTP, parámetros de consulta, establece el verbo HTTP, etcétera.
  2. Política ServiceCallout: Hace referencia a un mensaje creado por la política AssignMessage, define una URL de destino para la llamada externa y define un nombre para el objeto de respuesta que muestra el servicio de destino.

    Para mejorar el rendimiento, también puedes almacenar en caché las respuestas de ServiceCallout, como se describe en ¿Cómo puedo almacenar los resultados de la política ServiceCallout y después recuperarlos de la caché?

  3. Política ExtractVariables: Por lo general, define una expresión JSONPath o XPath que analiza el mensaje generado por ServiceCallout. Luego, la política establece variables que contienen los valores analizados desde la respuesta de ServiceCallout.

Control de errores personalizados

Referencia del elemento

A continuación, se describen los elementos y los atributos que puedes configurar en esta política:

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Remove>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
         </Remove>
         <Copy>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Copy>
        <Add>
            <Headers/>
            <QueryParams/>
            <FormParams/>
        </Add>
        <Set>
            <Headers/>
            <QueryParams/>
            <FormParams/>
            <Payload/>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Set>
    </Request>
    <Response>calloutResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
        <URL>http://example.com</URL>
        <LoadBalancer/>
        <SSLInfo/>
        <Properties/>
    </HTTPTargetConnection>
    <LocalTargetConnection>
        <APIProxy/>
        <ProxyEndpoint/>
        <Path/>
    </LocalTargetConnection>
</ServiceCallout>

Atributos de <ServiceCallout>

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">

En la siguiente tabla, se describen los atributos que son comunes a todos los elementos principales de las políticas:

Atributo Descripción Predeterminada Presencia
name

El nombre interno de la política. El valor del atributo name puede contener letras, números, espacios, guiones, guiones bajos y puntos. Este valor no puede superar los 255 caracteres.

De forma opcional, usa el elemento <DisplayName> para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.

N/A Obligatorio
continueOnError

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.

falso Opcional
enabled

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 adjunta a un flujo.

true Opcional
async

Este atributo dejó de estar disponible.

falso Obsoleta

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

<DisplayName>Policy Display Name</DisplayName>
Predeterminada

N/A

Si omites este elemento, se usa el valor del atributo name de la política.

Presencia Opcional
Tipo String

Elemento <Request>

Especifica la variable que contiene el mensaje de la solicitud que se envía desde el proxy de API al otro servicio. La variable se puede crear mediante una política anterior en el flujo, o puedes crearla intercalada en la política ServiceCallout.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Remove>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Remove>
    <Copy>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Copy>
    <Add>
        <Headers/>
        <QueryParams/>
        <FormParams/>
    </Add>
    <Set>
        <Headers/>
        <QueryParams/>
        <FormParams/>
        <Payload/>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Set>
</Request>

La sintaxis de las etiquetas <Remove>, <Copy>, <Add> y <Set> es igual que para la política AssignMessage.

La política muestra un error si el mensaje de la solicitud no se puede resolver o es de un tipo de mensaje de solicitud no válido.

En el ejemplo más simple, pasas una variable que contiene el mensaje de la solicitud que se propagó antes en el flujo del proxy de API:

<Request clearPayload="true" variable="myRequest"/>

También puedes propagar el mensaje de solicitud enviado al servicio externo en la política ServiceCallout:

<Request>
  <Set>
    <Headers>
      <Header name="Accept">application/json</Header>
    </Headers>
    <Verb>POST</Verb>
    <Payload contentType="application/json">{"message":"my test message"}</Payload>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
Predeterminada Si omites el elemento de la solicitud o alguno de sus atributos, Apigee asigna los siguientes valores predeterminados:

<RequestclearPayload="true" variable="servicecallout.request"/>

Veamos qué significan estos valores predeterminados. Primero, clearPayload=true significa que se crea un objeto de solicitud nuevo cada vez que se ejecuta la política ServiceCallout. Esto significa que la solicitud y la ruta del URI de solicitud nunca se reutilizan. En segundo lugar, el nombre de variable predeterminado, servicecallout.request, es un nombre reservado que se asigna a la solicitud si no proporcionas un nombre.

Es importante que sepas este nombre predeterminado si usas enmascarado de datos, si omites el nombre de la variable, debes agregar servicecallout.request a la configuración de la máscara. Por ejemplo, si quieres enmascarar el encabezado de autorización para que no aparezca en las sesiones de depuración, debes agregar lo siguiente a la configuración de enmascaramiento a fin de capturar el nombre predeterminado:

servicecallout.request.header.Authorization.

Presencia Opcional.
Tipo N/A

Atributos

Atributo Descripción Predeterminada Presencia
variable

Nombre de la variable que contendrá el mensaje de la solicitud.

servicecallout.request Opcional
clearPayload

Si es true, la variable que contiene el mensaje de solicitud se borra después de que la solicitud se envía al destino HTTP para liberar la memoria que usa el mensaje de solicitud.

Configura la opción clearPayload como falsa solo si el mensaje de solicitud es obligatorio después de que se ejecute el ServiceCallout.

true Opcional

Elemento <Request>/<IgnoreUnresolvedVariables>

Cuando se establece en true, la política ignora cualquier error de variable sin resolver en la solicitud.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
Predeterminada falso
Presencia Opcional
Tipo Booleano

Elemento <Response>

Incluye este elemento cuando la lógica del proxy de API requiera la respuesta de la llamada remota para su posterior procesamiento.

Cuando este elemento está presente, especifica el nombre de la variable que contendrá el mensaje de respuesta recibido del servicio externo. La respuesta del objetivo se asigna a la variable solo cuando la política lee la respuesta de forma correcta. Si por algún motivo la llamada remota falla, la política muestra un error.

Si se omite este elemento, el proxy de API no espera una respuesta. La ejecución del flujo del proxy de API continúa con los pasos de flujo posteriores. Además, a fin de afirmar lo obvio, sin un elemento Response, la respuesta del destino no está disponible para su procesamiento en pasos posteriores, y no hay forma de que el flujo del proxy detecte una falla en la llamada remota. Un uso común a fin de omitir el elemento Response cuando se usa ServiceCallout: para registrar mensajes en un sistema externo.

 <Response>calloutResponse</Response>
Predeterminada NA
Presencia Opcional
Tipo String

Elemento <Timeout>

El tiempo en milisegundos que la política ServiceCallout espera una respuesta del objetivo. No puedes establecer este valor de forma dinámica en el entorno de ejecución. Si el ServiceCallout alcanza un tiempo de espera, se muestra un HTTP 500, la política falla y el proxy de API entra en un estado de error, como se describe en Maneja las fallas.

<Timeout>30000</Timeout>
Predeterminada 55,000 milisegundos (55 segundos), la configuración de tiempo de espera HTTP predeterminada para Apigee
Presencia Opcional
Tipo Entero

Elemento <HTTPTargetConnection>

Proporciona detalles del transporte, como las URL, TLS/SSL y las propiedades de HTTP. Consulta la referencia de configuración de <TargetEndpoint>.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <LoadBalancer/>
    <SSLInfo/>
    <Properties/>
</HTTPTargetConnection>
Predeterminada N/A
Presencia Obligatorio
Tipo N/A

Elemento <HTTPTargetConnection>/<URL>

La URL del servicio a la que se llamará:

<HTTPTargetConnection>
    <URL>http://example.com</URL>
</HTTPTargetConnection>

Puedes proporcionar parte de la URL de forma dinámica con una variable. Sin embargo, la parte del protocolo de la URL, http://, no se puede especificar mediante una variable. En el siguiente ejemplo, usarás una variable para especificar el valor de un parámetro de consulta:

<URL>http://example.com/forecastrss?w=${request.header.woeid}</URL>

O bien, configura una parte de la ruta de URL con una variable:

<URL>http://example.com/{request.resourcePath}?w=${request.header.woeid}</URL>

Si quieres usar una variable a fin de especificar el dominio y el puerto de la URL, usa una variable solo para el dominio y el puerto, y una segunda variable para cualquier otra parte de la URL:

<URL>http://{request.dom_port}/{request.resourcePath}</URL>
Predeterminada N/A
Presencia Obligatorio
Tipo String

Elemento <HTTPTargetConnection>/<SSLInfo>

La configuración de TLS/SSL para el servicio de backend Si deseas obtener ayuda sobre la configuración de TLS/SSL, consulta Opciones para configurar TLS y la “Configuración de extremo de destino de TLS/SSL” en la referencia de configuración de proxy de API.

<HTTPTargetConnection>
    <URL>https://example.com</URL>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>myKeystore</KeyStore>
        <KeyAlias>myKey</KeyAlias>
        <TrustStore>myTruststore</TrustStore>
        <Ciphers/>
        <Protocols/>
    </SSLInfo>
</HTTPTargetConnection>
Predeterminada N/A
Presencia Opcional
Tipo N/A

Elemento <HTTPTargetConnection>/<Properties>

Propiedades de transporte HTTP al servicio de backend Para obtener más información, consulta Referencia de propiedades de extremos.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <Properties>
        <Property name="allow.http10">true</Property>
        <Property name="request.retain.headers">
          User-Agent,Referer,Accept-Language
        </Property>
    </Properties>
</HTTPTargetConnection>
Predeterminada N/A
Presencia Opcional
Tipo N/A

Elemento <HTTPTargetConnection>/<LoadBalancer>

Llamar a uno o más servidores de destino y realiza el balanceo de cargas en ellos. Consulta la muestra Llamar a servidores de destino en la sección Muestras. También consulta Balanceo de cargas entre servidores de backend. Consulta también Texto destacado del extremo o servidor de destino que analiza las formas de llamar a los servidores de destino desde la política ServiceCallout y las reglas de enrutamiento.

<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
Predeterminada N/A
Presencia Opcional
Tipo N/A

Elemento <LocalTargetConnection>

Especifica un proxy local, es decir, un proxy en la misma organización y entorno, como el objetivo de los textos destacados del servicio.

Para especificar aún más el destino, usa los elementos <APIProxy> y <ProxyEndpoint>, o el elemento <Path>.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
   <Path/>
</LocalTargetConnection>
Predeterminada N/A
Presencia Obligatorio
Tipo N/A

Elemento <LocalTargetConnection>/<APIProxy>

El nombre de un proxy de API que es el destino de una llamada local. El proxy debe estar en la misma organización y entorno que el proxy que realiza la llamada.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

Junto con el elemento <APIProxy>, incluye el elemento <ProxyEndpoint> a fin de especificar el nombre del extremo del proxy que se debe orientar para la llamada.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
</LocalTargetConnection>
Predeterminada N/A
Presencia Obligatorio
Tipo String

Elemento <LocalTargetConnection>/<ProxyEndpoint>

El nombre del extremo del proxy que debe ser el objetivo de las llamadas. Este es un extremo proxy en el proxy de API especificado con el elemento <APIProxy>.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>
Predeterminada N/A
Presencia Opcional
Tipo N/A

Elemento <LocalTargetConnection>/<Path>

Una ruta de acceso al extremo que se orientará. El extremo debe hacer referencia a un proxy en la misma organización y entorno que el proxy que realiza la llamada.

Usa esto en lugar de un par <APIProxy>/<ProxyEndpoint> cuando no lo sepas o no puedas confiar en el nombre de proxy. La ruta podría ser un objetivo confiable.

<LocalTargetConnection>
   <Path>/data-manager</Path>
</LocalTargetConnection>
Predeterminada N/A
Presencia Opcional
Tipo N/A

Esquemas

Variables de flujo

Las variables de flujo habilitan el comportamiento dinámico de las políticas y los flujos en el entorno de ejecución, en función de los encabezados HTTP, el contenido de los mensajes o el contexto del flujo. Las siguientes variables predefinidas de flujo están disponibles después de que se ejecuta una política ServiceCallout. Para obtener más información sobre las variables de flujo, consulta Referencia de variables de flujo.

Los ServiceCallouts tienen sus propias solicitudes y respuestas, y puedes acceder a esos datos a través de variables. Debido a que el mensaje principal usa los prefijos de variable request.* y response.*, usa los prefijos myrequest.* y calloutResponse.* (los valores predeterminados en la configuración de ServiceCallout) a fin de obtener datos de mensajes específicos para el ServiceCallout. En el primer ejemplo de la siguiente tabla, se muestra cómo debes obtener los encabezados HTTP en el ServiceCallout.

Variable Descripción

A continuación, se muestra un ejemplo de cómo obtener los encabezados de respuesta y solicitud del ServiceCallout, de manera similar a como obtendrías los encabezados de la solicitud y la respuesta principal.

calloutResponse.header.HeaderName

myRequest.header.HeaderName

En el ejemplo anterior, calloutResponse es el nombre de la variable para la respuesta en el texto destacado del servicio, y myRequest es el nombre de variable de la solicitud. Por ejemplo:

calloutResponse.header.Content-Length

Muestra el encabezado Content-Length de la respuesta del ServiceCallout.

Alcance: Desde el desvío del ServiceCallout
Tipo: String
Permiso: Lectura y escritura

Un encabezado de mensaje en la solicitud o respuesta del ServiceCallout. Por ejemplo, si la orientación del proxy de API es http://example.com y la orientación del ServiceCallout es http://mocktarget.apigee.net, estas variables son los encabezados del texto destacado para http://mocktarget.apigee.net.

servicecallout.requesturi

Alcance: Desde el inicio del texto destacado del ServiceCallout
Tipo: String
Permiso: Lectura y escritura

El URI de TargetEndpoint para una política ServiceCallout. El URI es la URL de TargetEndpoint sin la especificación del protocolo y el dominio.

servicecallout.{policy-name}.target.url

Alcance: Desde el inicio del texto destacado del ServiceCallout
Tipo: String
Permiso: Lectura y escritura

La URL de destino para un ServiceCallout.

calloutResponse.content

En la que calloutResponse es el nombre de la variable <Response> en la configuración de ServiceCallout.

Alcance: Desde la respuesta del ServiceCallout
Tipo: String
Permiso: Lectura y escritura

El cuerpo de la respuesta del ServiceCallout.

servicecallout.{policy-name}.expectedcn

Alcance: Desde el inicio del texto destacado del ServiceCallout
Tipo: String
Permiso: Lectura y escritura

El nombre común esperado del TargetEndpoint, al que se hace referencia en una política ServiceCallout. Esto es significativo solo cuando el TargetEndpoint hace referencia a un extremo TLS/SSL.

servicecallout.{policy-name}.failed

Alcance: Desde la respuesta del ServiceCallout
Tipo: Booleano
Permiso: Lectura y escritura.

Booleano que indica si la política se realizó de forma correcta, si es falsa, falló o si es verdadera.

Errores

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
steps.servicecallout.ExecutionFailed 500

Este error puede ocurrir en los siguientes casos:

  • Se le solicita a la política que controle la entrada con formato incorrecto o no válido.
  • El servicio de destino de backend muestra un estado de error (de forma predeterminada, 4xx o 5xx).
steps.servicecallout.RequestVariableNotMessageType 500 La variable Request especificada en la política no es del tipo Message. Por ejemplo, si es una string o algún otro tipo de mensaje que no sea de mensaje, verás este error.
steps.servicecallout.RequestVariableNotRequestMessageType 500 La variable Request especificada en la política no es del tipo RequestMessage. Por ejemplo, si es un tipo de respuesta, verás este error.

Errores en la implementación

Estos errores pueden generarse cuando implementas un proxy que contiene esta política.

Nombre del error Causa Corregir
URLMissing Falta el elemento <URL> dentro de <HTTPTargetConnection> o está vacío.
ConnectionInfoMissing Este error se produce si la política no tiene un elemento <HTTPTargetConnection> o <LocalTargetConnection>.
InvalidTimeoutValue Este error ocurre si el valor <Timeout> es negativo o cero.

Variables con fallas

Estas variables se configuran cuando se genera un error de entorno de ejecución. Para obtener más información, consulta Qué debes saber sobre los errores de la política.

Variables Donde Ejemplo
fault.name="fault_name" fault_name es el nombre de la falla, como se indica en la tabla de Errores del entorno de ejecución anterior. El nombre de la falla es la última parte del código de la falla. fault.name = "RequestVariableNotMessageType"
servicecallout.policy_name.failed policy_name es el nombre especificado por el usuario de la política que generó la falla. servicecallout.SC-GetUserData.failed = true

Ejemplo de respuesta de error

{
   "fault":{
      "detail":{
         "errorcode":"steps.servicecallout.RequestVariableNotMessageType"
      },
      "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]:
            request variable data_str value is not of type Message"
   }
}

Ejemplo de regla de falla

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
    <Step>
        <Name>AM-RequestVariableNotMessageType</Name>
    </Step>
    <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>

Temas relacionados