Variables de solicitud y respuesta

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

Cuando envías una solicitud a un proxy de API, puedes incluir toda o parte de la siguiente información, en función de cómo esté configurado el proxy de API:

  • Encabezados de solicitud
  • Parámetros de consulta
  • Datos de formularios
  • Cargas útiles XML o JSON
  • URIs de recursos

De forma predeterminada, todos los datos de una solicitud se transfieren sin cambios de ProxyEndpoint a TargetEndpoint. Por lo tanto, cuando TargetEndpoint envía la solicitud al servidor backend, toda la información de la solicitud original se transmite al servicio backend.

Lo mismo ocurre con la respuesta que recibe Apigee del servicio backend. De forma predeterminada, todos los datos recibidos en la respuesta se transfieren sin cambios a la aplicación que originó la solicitud.

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

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

Solicitud de un cliente HTTP que pasa por el endpoint de proxy al TargetEndpoint del backend para acceder al servicio HTTP. Se proporcionan ejemplos del endpoint proxy y del endpoint de destino.

En este proxy de API:

  • Host virtual del proxy de API: default
  • Dominio definido por los nombres de host del grupo de entornos: http://www.example.com
  • Ruta base del proxy: /v1/weather
  • TargetEndpoint especificado por la regla de ruta: default
  • URL de destino: http://weather.yahooapis.com

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

curl -X GET http://www.example.com/v1/weather/forecastrss?w=12797282

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

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

Las variables de flujo se definen con los siguientes valores:

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

A continuación, TargetEndpoint hace una solicitud al servicio de backend con la información de la solicitud:

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

Observa cómo los parámetros de recursos y de consulta especificados en la solicitud se incluyen automáticamente en la solicitud al servidor backend. Según la definición de TargetEndpoint, la solicitud tiene la siguiente forma:

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

Al igual que los parámetros de consulta, los encabezados o los parámetros de formulario que incluyas en la solicitud al proxy de la API se transfieren al servidor backend. Por ejemplo, supongamos que envías la siguiente solicitud, que incluye un encabezado:

curl -X GET -H 'Content-type:application/xml' http://www.example.com/v1/weather/forecastrss?w=12797282

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

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

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

¿Cómo se devuelven los datos de respuesta?

De forma predeterminada, todos los datos que recibe Apigee del servicio de backend en la respuesta se transfieren sin cambios a la aplicación que ha originado la solicitud. Al igual que en el caso de la solicitud, los datos devueltos en la respuesta se pueden consultar a través de las variables de flujo de Apigee. Para obtener más información, consulta la referencia de variables de flujo.

Acceder a datos de solicitudes y respuestas en un proxy de API

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

  • Para eliminar la información de seguridad que usa Apigee para validar solicitudes. El servicio de backend no requiere esa información.
  • Para añadir datos enviados al servicio backend, por ejemplo, para monitorizar a los usuarios o recoger analíticas.
  • 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 se determina a partir de los datos de la solicitud. A continuación, quitas esos datos de la solicitud antes de enviarla al servicio de backend.

Lo mismo ocurre con los datos de la respuesta. Como parte del procesamiento de la respuesta, el proxy de la API puede modificar los datos antes de devolverlos a la aplicación que ha enviado la solicitud.

Mensajes de solicitud de acceso

Puedes usar políticas para acceder a partes de un mensaje de solicitud y cambiarlas. Entre estas partes se incluyen las siguientes:

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

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

Las políticas pueden examinar las variables de solicitud y, a continuación, transformar o rechazar la solicitud en función del contenido de esas variables. Las políticas transforman la solicitud definiendo las variables adecuadas, como las correspondientes a los encabezados de solicitud.

Acceder a los mensajes de respuesta

Mediante las variables que se aplican al mensaje de respuesta, las políticas pueden acceder a los componentes del mensaje, como el encabezado, los parámetros de consulta y los parámetros de formulario, la dirección IP de origen, el cuerpo del mensaje HTTP, etc.

El proxy recibe un mensaje de respuesta y, a continuación, le aplica una serie de políticas en función de las condiciones evaluadas en la respuesta, que pueden modificarla o transformarla.

Las políticas pueden examinar las variables de respuesta y, a continuación, transformar o rechazar la solicitud en función del contenido de esas variables. Las políticas transforman la respuesta definiendo las variables adecuadas, como las variables correspondientes a los encabezados de respuesta.

Políticas comunes para acceder a variables de flujo

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

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