Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
Ahora que cambiaste el extremo de destino, estás listo para agregar una política al proxy.
Una política es un componente de Apigee que se puede conectar a diferentes puntos en el flujo de mensajes a través de sus proxies de API. Las políticas pueden transformar los formatos de los mensajes, aplicar control de acceso, llamar a servicios remotos, autorizar a usuarios, examinar el contenido de los mensajes en busca de posibles amenazas y mucho más.
En este instructivo, agregarás la política de XML a JSON a tu proxy. Esta política convierte la carga útil de un mensaje XML en JSON. También cambia el encabezado Content-Type
de la respuesta.
Puedes adjuntar una política a un flujo en el proxy. Los flujos controlan cómo se ejecutan las políticas. En este ejemplo, agregarás la política a un flujo especial, llamado PreFlow. Las políticas en el PreFlow se ejecutan antes que cualquier otra política en el proxy. Si bien no es necesario comprender los flujos en detalle para leer este ejemplo, puedes obtener más información sobre ellos en Controla proxies de API con flujos.
Editor de proxies nuevo
Hay dos pasos para agregar la política XMLtoJSON a tu proxy:
Crea una instancia de la política
Para usar una política, primero debes crear una instancia nueva de la política a partir de la plantilla de políticas de la siguiente manera:
Si usas la IU de Apigee en la consola de Cloud, selecciona Desarrollo de proxy > Proxies de API.
Si usas la IU clásica de Apigee, selecciona Desarrollar > Proxies de API y, en el panel Proxies, selecciona el entorno para el proxy.
- En la lista de proxies, selecciona el proxy en el que deseas agregar la política.
Haz clic en la pestaña Desarrollar:
- En el panel izquierdo, haz clic en el botón + junto a la carpeta Políticas.
En el cuadro de diálogo Crear política, haz clic en el campo Seleccionar tipo de política, desplázate hacia abajo hasta mediación y selecciona XML a JSON.
De manera opcional, puedes cambiar el Nombre y el Nombre visible de la política. De forma predeterminada, Apigee proporciona un prefijo corto para el nombre de la política, en este caso, X2J-. Puedes agregar una secuencia de palabras descriptivas separadas por guiones después del prefijo. Consulta Convenciones de nombres.
Cuando hayas terminado, haz clic en Crear para crear la política.
La política XML a JSON se muestra ahora en el panel a la derecha de la vista Desarrollar:
La mitad inferior del panel muestra el código XML de la política.
Para obtener más información sobre la política, selecciona el ícono de información junto al nombre de la política y haz clic en la Política XML a JSON. Esto muestra la página de referencia de la política.
Cambia el nombre de la política
Para cambiar el nombre de una política, haz lo siguiente:
- Selecciona la política en Políticas en el panel de la izquierda.
- En el elemento <Nombre visible> en el código XML de la política, agrega una frase descriptiva para la política, como change-xml-to-json, después de la abreviatura del nombre de la política:
Esto actualiza automáticamente el nombre de la política que se muestra en Políticas.
Consulta Convenciones de nombres.
Adjunta la política a un paso en el PreFlow
Ahora que creaste la política XML To JSON, puedes adjuntarla a un paso en el PreFlow:
- Selecciona Extremos de Proxy > configuración predeterminada> PreFlow en el panel izquierdo:
Nota: Es posible que debas expandir el editor visual en el panel de la derecha para ver todos los elementos. Para ello, haz clic y arrastra el divisor entre el editor visual y el editor de texto un poco hacia abajo.
- Haz clic en el botón + junto a PreFlow en el panel Respuesta en la esquina inferior derecha del editor visual:
- En el cuadro de diálogo Agregar paso de la política, selecciona la política X2J-change-xml-to-json.
Haz clic en Agregar para adjuntar la política.
La política X2J-change-xml-to-json ahora se muestra en el panel Respuesta:
- Haga clic en Save para guardar la revisión actual con sus cambios.
- Para implementar los cambios en la revisión, haz clic en Implementar y sigue las instrucciones en Implementa un proxy de API.
Editor de proxies clásico
Para agregar la política de XMLtoJSON a tu proxy, haz lo siguiente:
- Abre la IU de Apigee en un navegador y accede a tu cuenta.
- Haz clic en Proxies de API en la ventana principal y selecciona un proxy. Para este ejemplo, selecciona el proxy que creaste en el Paso 2: Crea un proxy de API.
Haz clic en la pestaña Develop:
Apigee muestra el editor de proxy de API.
En el panel Navegador, haz clic en Proxy Endpoints > default > PreFlow:
Apigee muestra el editor de flujo:
Además, Apigee muestra la configuración de extremo del proxy predeterminada en el panel Código:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/myproxy</BasePath> <Properties/> <VirtualHost>default</VirtualHost> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
- Para agregar una política a tu proxy, haz clic en el botón + Paso en el procesamiento previo de la respuesta (la mitad inferior del editor de flujo):
Apigee muestra una lista categorizasa de políticas en el cuadro de diálogo Agregar que puedes agregar a tu flujo:
- Desplázate hacia abajo y selecciona la política de XMLtoJSON en la categoría Mediación.
Deja los nombres predeterminados y haz clic en Agregar.
Apigee adjunta la nueva política al PreFlow de la respuesta:
Ten en cuenta que si haces clic en Agregar, Apigee hará lo siguiente:
- Agregará la política nueva en Políticas, en el panel de navegación.
- Agregará la política de XMLtoJSON en el panel Flujo.
- Mostrará la configuración XML de la política en panel de código.
- Haz clic en Guardar para guardar la revisión actual con sus cambios.
- Para implementar los cambios, haz clic en la pestaña Descripción general y en el botón Implementar.
Prueba la política nueva
Para probar la política nueva, ejecuta el siguiente comando de curl
en una ventana de terminal:
curl https://YOUR_ENV_GROUP_HOSTNAME/myproxy
En el ejemplo anterior, YOUR ENV_GROUP_HOSTNAME
es el nombre de host del grupo de entornos. Consulta Encuentra el nombre de host del grupo de entornos.
Consulta Llama al proxy de API para obtener más información.
Como alternativa, puedes abrir la misma URL en un navegador.
Deberías recibir la siguiente respuesta:
{ "root": { "city": "San Jose", "firstName": "John", "lastName": "Doe", "state": "CA" } }
Si el cuerpo de la respuesta no es similar a este, verifica lo siguiente:
- Tu extremo de destino es
https://mocktarget.apigee.net/xml
, como se describe en Paso 4: Cambia tu extremo de destino:- Si obtienes
Hello, Guest!
como respuesta, debes adjuntar/xml
al final del extremo de destino. - Si obtienes un
404
, verifica que estás accediendo aapigee.net
y no aapigee.com
.
- Si obtienes
- Se implementa la última revisión de tu proxy. Intenta volver a implementar el proxy de API como se describe en Implementa un proxy de API y Anula la implementación de un proxy de API.
Para ver los encabezados de respuesta y solicitud HTTP, habilita la verbosidad en curl
con la opción -vs
(v
hace que la respuesta sea detallada, pero s
suprime algunos de los detallades menos interesantes). En el siguiente ejemplo, se supone que el proxy se llama myproxy
:
curl -vs https://YOUR_ENV_GROUP_HOSTNAME/myproxy | python -m json.tool
Deberías obtener una respuesta similar a la siguiente. Ten en cuenta que el encabezado Content-Type
en la respuesta es application/json
.
La política de XMLtoJSON cambia el encabezado antes de enviar la respuesta.
* Trying 10.20.30.40... * TCP_NODELAY set * Connected to apitest.acme.com (10.20.30.40) port 443 (#0) ... > GET /myproxy HTTP/1.1 > Host: apitest.acme.com > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 25 May 2018 16:20:00 GMT < Content-Type: application/json;charset=UTF-8 < Content-Length: 77 < Connection: keep-alive < X-Powered-By: Apigee < Access-Control-Allow-Origin: * ... { [77 bytes data] { "root": { "city": "San Jose", "firstName": "John", "lastName": "Doe", "state": "CA" } }