Variables de solicitudes y respuestas

Estás viendo la documentación de Apigee Edge.
Ve a la documentación de Apigee X.
Más información

Cuando realizas una solicitud a un proxy de API, puedes pasar una parte información siguiente, o pasarla en su totalidad, según cómo se configura el proxy de API:

  • Solicita encabezados
  • Parámetros de consulta
  • Datos de formulario
  • Cargas útiles de XML o JSON
  • URI de recursos

De forma predeterminada, todos los datos en una solicitud se pasan sin cambios del ProxyEndpoint al TargetEndpoint. Por lo tanto, cuando el TargetEndpoint realiza la solicitud al servidor de backend, toda la información de la solicitud original se pasa al servicio de backend.

Lo mismo sucede con la respuesta que recibe Edge del servicio de backend. De forma predeterminada, todos los datos recibidos en la respuesta se pasan sin cambios a la app que originó la solicitud.

¿Cómo se pasan los datos de solicitud al servidor de backend?

En la siguiente imagen, se muestra una definición de proxy de API:

Solicitud del cliente HTTP que pasa por el extremo del proxy al extremo objetivo en el backend a fin de alcanzar el servicio HTTP Se proporcionan ejemplos del extremo de proxy y el extremo de destino.

Para este proxy de API, se requiere lo siguiente:

  • Host virtual del proxy de API: "default"
  • Dominio definido por el host virtual: “http://myOrg-prod.apigee.net”
  • Ruta base del proxy: "/v1/weather"
  • TargetEndpoint especificado por regla de enrutamiento: "default"
  • URL de destino: "http://weather.yahooapis.com"

Una aplicación cliente realiza una solicitud GET al proxy de API con el siguiente comando curl:

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Ten en cuenta que esta solicitud contiene el recurso “forecastrss” y un parámetro de consulta, w. Edge analiza la solicitud como se muestra a continuación y asigna partes de la solicitud a las variables de flujo:

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

Las variables de flujo se establecen con los siguientes valores:

  • request.verb: "GET"
  • proxy.basepath: "/v1/weather"
  • proxy.pathsuffix: "forecastrss"
  • request.querystring: "w=12797282"

Luego, el TargetEndpoint realiza una solicitud al servicio de backend con información de la solicitud:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

Ten en cuenta cómo los parámetros de consulta y recursos especificados en la solicitud se incluyen de forma automática en la solicitud al servidor de backend. Desde la definición del TargetEndpoint, la solicitud tiene el siguiente formato:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

Al igual que los parámetros de consulta, los encabezados o parámetros de formato que incluyas en la solicitud al proxy de la API se pasan al servidor de backend. Por ejemplo, realizas la siguiente solicitud que incluye un encabezado:

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

O una solicitud en el siguiente formato para incluir un encabezado y datos de formato:

curl -X POST -H "Content-type:application/json" -d \
  '{"email" : "janetutorialxml@example.com",
    "firstName" : "Jane",
    "lastName" : "Tutorial",
    "userName" : "jtutorialxml"
  }' \
  http://myOrg-prod.apigee.net/v1/register/user

En ambos ejemplos, los encabezados y los datos del formulario se pasan sin cambios al servicio de backend. Los encabezados se representan con variables de flujo, como request.headers.count y request.headers.names. Los datos del formulario se representan con variables de flujo, como request.formparam.count y request.formparam.names.

¿Cómo se muestran los datos de respuesta?

De forma predeterminada, todos los datos que recibe Edge del servicio de backend en la respuesta se pasan sin cambios a la app que originó la solicitud. Como se describió anteriormente para la solicitud, los datos que se muestran en la respuesta son accesibles a través de las variables de flujo en Edge. Para obtener más información, consulta Referencia de variables de flujo.

Accede a los datos de solicitud y respuesta en un proxy de API

Hay muchas veces en las que deseas modificar los datos de la solicitud antes de enviarlos al servidor de backend. Por ejemplo:

  • Para quitar la información de seguridad que usa Edge para validar solicitudes. El servicio de backend no requiere esa información
  • Para agregar datos enviados al servicio de backend, por ejemplo, a fin de realizar un seguimiento de los usuarios o recopilar estadísticas
  • Para procesar la solicitud de forma condicional en función de los datos de la solicitud. Por ejemplo, un proxy de API puede tener varios TargetEndpoints. El TargetEndpoint que usa la solicitud está determinado por los datos de la solicitud. Luego, debes quitar esos datos de la solicitud antes de enviarlos al servicio de backend

Lo mismo sucede con los datos en la respuesta. Como parte del procesamiento de la respuesta, es posible que el proxy de API desee modificar los datos antes de mostrarlos en la app solicitante.

Mensajes de solicitud de acceso

Puedes usar las políticas para acceder y cambiar partes de un mensaje de solicitud. Estas partes incluyen lo siguiente:

  • Encabezados
  • Parámetros de consulta
  • Parámetros del formulario
  • Dirección IP de origen
  • Cuerpo del mensaje HTTP

En un flujo normal, una vez que se procesa la solicitud, el proxy envía la solicitud transformada al destino.

Las políticas pueden examinar las variables de solicitud y, luego, transformar o rechazar la solicitud en función del contenido de esas variables. Las políticas transforman la solicitud mediante la configuración de las variables adecuadas, por ejemplo, las variables correspondientes a los encabezados de la solicitud.

Mensajes de respuesta de acceso

Con las variables que se aplican al mensaje de respuesta, las políticas pueden acceder a los componentes del mensaje, incluido el encabezado, los parámetros de consulta y los parámetros de formato, la dirección IP de origen, el cuerpo del mensaje HTTP y demás.

El proxy recibe un mensaje de respuesta y, luego, le aplica a una serie de políticas en función de las condiciones evaluadas en la respuesta, que puede modificar o transformar la respuesta.

Las políticas pueden examinar las variables de respuesta y, luego, transformar o rechazar la solicitud en función del contenido de esas variables. Las políticas transforman la respuesta mediante la configuración de las variables adecuadas, por ejemplo, las variables correspondientes a los encabezados de respuesta.

Políticas comunes para acceder a variables de flujo

Edge define varias políticas que puedes usar para procesar los datos de la solicitud y la respuesta. Estas políticas incluyen lo siguiente:

  • Política AssignMessage: Crea o modifica mensajes de solicitud o respuesta HTTP durante un flujo de proxy de API. También crea y propaga variables de flujo nuevas.
  • Política ExtractVariables: Extrae contenido de mensajes, incluidos encabezados, rutas de URI, cargas útiles y parámetros de consulta, para usarlos en una declaración de condición. Luego, la política aplica un patrón de texto al contenido del mensaje y, cuando encuentra una coincidencia, establece una variable designada.
  • Política JSONtoXML y política XMLtoJSON: Convierte mensajes del formato de notación de objetos de JavaScript (JSON) en formato de lenguaje de marcación extensible (XML), o viceversa.
  • Política JavaCallout, política JavaScript, Política PythonScript y Política RegularExpressionProtection: estas políticas te permiten escribir una secuencia de comandos para acceder a variables de flujo que contienen datos de solicitudes y respuestas.