Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Ahora que ha cambiado el endpoint de destino, puede añadir una política a su proxy.
Una política es un componente de Apigee que puedes adjuntar a diferentes puntos del flujo de mensajes a través de tus proxies de API. Las políticas pueden transformar formatos de mensajes, aplicar el control de acceso, llamar a servicios remotos, autorizar a usuarios, examinar el contenido de los mensajes para detectar posibles amenazas y mucho más.
En este tutorial, vas a añadir la política XMLtoJSON 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, añadirás la política a un flujo especial llamado PreFlow. Las políticas de PreFlow se ejecutan antes que cualquier otra política del proxy. Aunque no es necesario que conozcas los flujos en detalle para leer este ejemplo, puedes obtener más información sobre ellos en el artículo Controlar proxies de APIs mediante los flujos.
Añade la política
Añade la política XMLtoJSON a tu proxy.
Apigee en la consola de Cloud
Para añadir la política XMLtoJSON a tu proxy, debes seguir estos dos pasos:
Crear una instancia de la política
Para usar una política, primero debes crear una instancia de la política a partir de la plantilla de política de la siguiente manera:
-
En la Google Cloud consola, ve a la página Desarrollo de proxy > Proxies de API.
- En la lista de proxies, selecciona el proxy al que quieras añadir la política.
Haz clic en la pestaña Desarrollar.
- En el panel de la izquierda, haga clic en el botón + situado junto a la carpeta Políticas.
- En el cuadro de diálogo Crear política, selecciona Políticas estándar para filtrar la lista de políticas disponibles por tipo de política.
- En el cuadro de texto Seleccionar tipo de política, desplázate hacia abajo hasta Mediación y selecciona XML a JSON.
También 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 añadir una secuencia de palabras descriptivas separadas por guiones después del prefijo. Consulta las nomenclaturas.
Cuando hayas terminado, haz clic en Crear para crear la política.
La política XML a JSON se muestra ahora en el panel de la derecha de la vista Desarrollo:
En la mitad inferior del panel se muestra el código XML de la política.
Para obtener más información sobre la política, selecciona el icono de información
situado junto al nombre de la política
y haz clic en
Política de XML a JSON. Se mostrará la página de referencia de la política.
Usar Gemini Code Assist para revisar las instrucciones de las políticas
Puedes usar Gemini Code Assist en la interfaz de usuario para obtener información sobre los elementos de las políticas. Consulta Usar la explicación de código de Gemini Code Assist con políticas para obtener más información.
Cambiar el nombre de la política
Para cambiar el nombre de una política, sigue estos pasos:
- En el panel de la izquierda, seleccione la política en Políticas.
- En el elemento <DisplayName> del código XML de la política,
añade una frase descriptiva para la política, como change-xml-to-json,
después de la abreviatura del nombre de la política:
De esta forma, se actualiza automáticamente el nombre de la política, que se muestra en Políticas.
Consulta las nomenclaturas.
Adjunta la política a un paso de PreFlow
Ahora que has creado la política XML a JSON, puedes adjuntarla a un paso de PreFlow:
- En el panel de la izquierda, selecciona Proxy Endpoints > default > PreFlow:
Nota: Es posible que tengas que ampliar el editor visual del panel de la derecha para ver todos los elementos. Para hacerlo, haz clic en la barra que separa el editor visual del editor de texto y arrástrala un poco hacia abajo.
- En el panel Respuesta, haz clic en el botón + situado junto a PreFlow, en la parte inferior derecha del editor visual:
- En el cuadro de diálogo Añadir paso de política, selecciona la política X2J-change-xml-to-json.
Haga clic en Añadir para adjuntar la política.
La política X2J-change-xml-to-json se muestra ahora en el panel Respuesta:
- Haz clic en Guardar para guardar la revisión actual con los cambios.
- Para desplegar los cambios en la revisión, haz clic en Desplegar y sigue las instrucciones de Desplegar un proxy de API.
UI clásica de Apigee
Para añadir la política XMLtoJSON a tu proxy, sigue estos pasos:
- Abre la interfaz de usuario de Apigee en un navegador e inicia sesión.
- En la ventana principal, haz clic en Proxies de API y selecciona un proxy. En este ejemplo, selecciona el proxy que has creado en el paso 2: crea un proxy de API.
Haz clic en la pestaña Desarrollar:
Apigee muestra el editor de proxies de API.
En el panel Navigator, haz clic en Endpoints de proxy > default > PreFlow:
Apigee muestra el editor de flujo:
Además, Apigee muestra la configuración predeterminada de Proxy Endpoint 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 añadir una política a tu proxy, haz clic en el botón + Paso en
el PreFlow de respuesta (la mitad inferior del editor de flujo):
Apigee muestra una lista categorizada de políticas en el cuadro de diálogo Añadir que puedes añadir a tu flujo:
- Desplázate hacia abajo y selecciona la política XMLtoJSON en la categoría Mediación.
Deja los nombres predeterminados y haz clic en Añadir.
Apigee adjunta la nueva política al PreFlow de la respuesta:
Ten en cuenta que, al hacer clic en Añadir, Apigee hace lo siguiente:
- Añade la nueva política en Políticas del panel Navegador.
- Añade la política XMLtoJSON en el panel Flujo.
- Muestra el XML de configuración de la política en el panel Código.
- Haz clic en Guardar para guardar la revisión actual con los cambios.
- Para implementar los cambios, haz clic en la pestaña Vista general y, a continuación, en el botón Implementar.
Probar la nueva política
Para probar la nueva política, ejecuta el siguiente comando curl
en una ventana de terminal:
curl https://YOUR_ENV_GROUP_HOSTNAME/myproxy
donde YOUR ENV_GROUP_HOSTNAME
es el nombre de host del grupo de entornos. Consulta
Buscar el nombre de host del grupo de entornos.
Consulta más información en Llama a tu proxy de API.
También 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 tiene este aspecto, comprueba lo siguiente:
- Tu punto de conexión de destino es
https://mocktarget.apigee.net/xml
, tal como se describe en el paso 4: Cambia el punto de conexión de destino:- Si recibes
Hello, Guest!
como respuesta, debes añadir/xml
al final del endpoint de destino. - Si recibes un
404
, comprueba que estás accediendo aapigee.net
y no aapigee.com
.
- Si recibes
- Se ha desplegado la última revisión de tu proxy. Prueba a volver a desplegar tu proxy de APIs tal como se describe en Desplegar un proxy de APIs y Anular el despliegue de un proxy de APIs.
Para ver los encabezados de solicitud y respuesta HTTP, habilita la verbosidad en curl
con la opción -vs
(v
hace que la respuesta sea detallada, pero s
suprime algunos de los detalles menos interesantes). En el siguiente ejemplo se da por supuesto 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
de la respuesta es application/json
.
La política 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" } }