Implementa proxies de API con la API

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

Cada organización tiene un ciclo de vida de desarrollo de software (SDLC) único. A menudo, es necesario sincronizar y alinear la implementación del proxy de API con los procesos que se usan para los servicios de backend.

Los métodos de la API de Edge que se muestran en este tema se pueden usar para integrar la administración de proxy de API en el SDLC de tu organización. Un uso común de esta API es escribir secuencias de comandos o código que implementan proxies de API o que migran proxies de API de un entorno a otro, como parte de un proceso automatizado más grande que también implementa o migra otras aplicaciones.

La API de Edge no hace suposiciones sobre tu SDLC (ni sobre el de otra persona, en realidad). En cambio, expone funciones atómicas que tu equipo de desarrollo puede coordinar para automatizar y optimizar el ciclo de vida de desarrollo de tu API.

Para obtener información completa, consulta APIs de Edge.

Para usar la API de Edge, debes autenticarte en tus llamadas. Puedes hacerlo con uno de los siguientes métodos:

En este tema, nos enfocaremos en el conjunto de APIs para administrar proxies de API.

Video: Mira este breve video para aprender a implementar una API.

Interactúa con la API

En los siguientes pasos, se explican interacciones simples con las APIs.

Enumerar las APIs de tu organización

Para comenzar, puedes obtener una lista de todos los proxies de API de tu organización. Recuerda sustituir las entradas por EMAIL:PASSWORD y ORG_NAME. Para obtener instrucciones, consulta Usa la API de Edge.

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis

Respuesta de muestra:

[ "weatherapi" ]

Obtén una API

Puedes llamar al método GET en cualquier proxy de API de tu organización. Esta llamada muestra una lista de todas las revisiones disponibles del proxy de API.

curl -u EMAIL:PASSWORD -H "Accept: application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi

Respuesta de muestra:

{
  "name" : "weatherapi",
  "revision" : [ "1" ]
}

El único detalle que muestra este método es el nombre del proxy de API junto con la revisión asociada, que tiene un número asociado. Los proxies de API consisten en un conjunto de archivos de configuración. Las revisiones proporcionan un mecanismo básico para administrar las actualizaciones de la configuración a medida que iteras. Las revisiones están numeradas de forma secuencial, lo que te permite revertir un cambio mediante la implementación de una revisión anterior de tu proxy de API. Además, puedes implementar una revisión de un proxy de API en el entorno de producción y seguir creando revisiones nuevas de ese proxy de API en el entorno de pruebas. Cuando estés listo, puedes promover la revisión superior del proxy de API desde el entorno de pruebas sobre la revisión anterior del proxy de API en el entorno de producción.

En este ejemplo, solo hay una revisión porque se acaba de crear el proxy de API. A medida que un proxy de API se mueve por el ciclo de vida de la configuración y la implementación iterativa, el número de revisión se incrementa por números enteros. Mediante llamadas directas a la API para la implementación, tienes la opción de aumentar el número de revisión del proxy de API. A veces, cuando realizas cambios menores, es posible que no desees aumentar la revisión.

Obtener revisiones de API

La versión de la API (por ejemplo, api.company.com/v1) debería cambiar con muy poca frecuencia. Cuando aumentas la versión de la API, significa que se produjo un cambio significativo en la firma de la interfaz externa que expone la API.

La revisión del proxy de la API es un número incrementado asociado con una configuración de proxy de la API. Los servicios de API mantienen revisiones de tu configuración para que puedas revertir una configuración cuando algo sale mal. De forma predeterminada, la revisión de un proxy de API aumenta automáticamente cada vez que importas un proxy de API mediante la API Importar un proxy de API. Si no deseas aumentar la revisión de un proxy de API, usa la API de Update API proxy review. Si usas Maven para la implementación, usa las opciones clean o update, como se describe en el archivo readme sobre el complemento de Maven.

Por ejemplo, puedes llamar al método GET en la revisión 1 del proxy de API para obtener una vista detallada.

curl -u EMAIL:PASSWORD -H "Accept:application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1

Respuesta de ejemplo

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1343178905169,
  "createdBy" : "andrew@apigee.com",
  "lastModifiedAt" : 1343178905169,
  "lastModifiedBy" : "andrew@apigee.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

Estos elementos de configuración de proxy de API se documentan en detalle en la referencia de configuración de proxy de API.

Implementar una API en un entorno

Una vez que tu proxy de API esté configurado para recibir y reenviar solicitudes de forma correcta, puedes implementarlo en uno o más entornos. Por lo general, iteras en los proxies de API en test y, cuando está todo listo, promocionas la revisión del proxy de API a prod. A menudo, descubrirás que tienes muchas más revisiones de un proxy de API en el entorno de pruebas, principalmente porque harás mucha menos iteración en el entorno de producción.

No se puede invocar un proxy de API hasta que se haya implementado en un entorno. Una vez que hayas implementado la revisión del proxy de la API en producción, podrás publicar la URL prod para los desarrolladores externos.

Cómo enumerar entornos

Cada organización de Apigee Edge tiene al menos dos entornos: test y prod. La distinción es arbitraria. El objetivo es brindarte un área para verificar que tu proxy de API funcione correctamente antes de abrirlo para los desarrolladores externos.

Cada entorno es solo una dirección de red, lo que te permite segregar el tráfico entre los proxies de API en los que trabajas y aquellos a los que acceden las apps en el tiempo de ejecución.

Los entornos también proporcionan segregación de datos y recursos. Por ejemplo, puedes configurar diferentes memorias caché en prueba y producción, a las que solo pueden acceder los proxies de API que se ejecutan en ese entorno.

Visualiza los entornos de una organización

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments

Respuesta de ejemplo

[ "test", "prod" ]

Explora las implementaciones

Una implementación es una revisión de un proxy de API que se implementó en un entorno. Se puede acceder a un proxy de API en el estado implementado mediante la red en las direcciones definidas en el elemento <VirtualHost> para ese entorno.

Implementa proxies de API

No se pueden invocar los proxies de API hasta que se hayan implementado. Los servicios de la API exponen las APIs de RESTful que proporcionan control sobre el proceso de implementación.

Solo se puede implementar una revisión de un proxy de API en un entorno a la vez. Por lo tanto, se debe anular la implementación de la revisión implementada. Puedes controlar si el paquete nuevo se implementa como una revisión nueva o si reemplaza la revisión existente.

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

Primero, anula la implementación de la revisión existente. Especifica el nombre del entorno y el número de revisión del proxy de API del que deseas anular la implementación:

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Luego, implementa la revisión nueva. La nueva revisión del proxy de API ya debe existir:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Implementación sencilla (sin tiempo de inactividad)

Para minimizar el potencial de tiempo de inactividad durante la implementación, usa el parámetro override en el método de implementación y configúralo como true.

No puedes implementar una revisión de un proxy de API sobre otra. La primera siempre debe estar anulada. Si configuras override como true, indicas que se debe implementar una revisión de un proxy de API sobre la revisión implementada actualmente. El resultado es que se revierte la secuencia de implementación: se implementa la revisión nueva y, una vez que se completa la implementación, se anula la implementación de la revisión ya implementada.

En el siguiente ejemplo, se configura el valor override pasándolo como un parámetro de formulario:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments" \
  -d "override=true" \
  -u EMAIL:PASSWORD

Puedes optimizar aún más la implementación si configuras el parámetro delay. El parámetro delay especifica un intervalo de tiempo, en segundos, antes del cual se debe anular la implementación de la revisión anterior. El efecto es que las transacciones en curso tienen un intervalo de tiempo en el que se debe completar antes de que el proxy de API que procesa la transacción se anule. A continuación, se muestra lo que sucede con override=true y el conjunto de parámetros delay:

  • La revisión 1 controla las solicitudes.
  • Se está implementando la revisión 2 en paralelo.
  • Cuando la revisión 2 se implementa por completo, el tráfico nuevo se envía a la revisión 2. No se envía tráfico nuevo a la revisión 1.
  • Sin embargo, es posible que la revisión 1 aún esté procesando transacciones existentes. Cuando configuras el parámetro delay (por ejemplo, 15 segundos), le otorgas 15 segundos a la revisión 1 para que termine de procesar las transacciones existentes.
  • Después del intervalo de retraso, se anula la implementación de la Revisión 1.
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments?delay=15" \
  -d "override=true" \
  -u EMAIL:PASSWORD
Parámetro de consulta Descripción
override

El valor predeterminado es false (comportamiento de implementación normal: la revisión existente no está implementada y, luego, se implementa la revisión nueva).

Configúralo en true para anular el comportamiento de implementación normal y proporcionar una implementación sin interrupciones. La revisión existente permanece implementada mientras también se implementa la nueva. Cuando se implementa la revisión nueva, se anula la implementación de la anterior. Úsalo junto con el parámetro delay para controlar cuándo se produce la anulación de la implementación.

delay

Para permitir que se complete el procesamiento de transacciones en la revisión existente antes de anular la implementación y eliminar la posibilidad de 502 Bad Gateway o 504 Gateway Timeout errors, configura este parámetro en la cantidad de segundos que quieres que se retrase la anulación de la implementación. No hay límite para la cantidad de segundos que puedes configurar, y no hay ramificaciones de rendimiento por configurar una gran cantidad de segundos. Durante el retraso, no se envía tráfico nuevo a la revisión anterior.

El valor predeterminado es de 0 (cero) segundos. Cuando override se configura como verdadero y delay es 0, se anula la implementación de la revisión existente inmediatamente después de que se implementa la revisión nueva. Los valores negativos se tratan como 0 (cero) segundos.

Cuando se usa override=true junto con un delay, se pueden eliminar las respuestas HTTP 5XX durante la implementación. Esto se debe a que ambas revisiones del proxy de la API se implementarán de forma simultánea, y la revisión anterior se anulará su implementación después de la demora.

Ver todas las implementaciones de una revisión de API

A veces, es necesario recuperar una lista de todas las revisiones implementadas actualmente de un proxy de API.

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1/deployments \
  -u EMAIL:PASSWORD
{
  "aPIProxy" : "weatherapi",
  "environment" : [ {
    "configuration" : {
      "basePath" : "",
      "steps" : [ ]
    },
    "name" : "test",
    "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "90096dd1-1019-406b-9f42-fbb80cd01200"
    }, {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "7d6e2eb1-581a-4db0-8045-20d9c3306549"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "1619e2d7-c822-45e0-9f97-63882fb6a805"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "8a5f3d5f-46f8-4e99-b4cc-955875c8a8c8"
    } ],
    "state" : "deployed"
  } ],
  "name" : "1",
  "organization" : "org_name"
}

La respuesta anterior contiene muchas propiedades específicas de la infraestructura interna de Apigee Edge. A menos que uses Apigee Edge de forma local, no puedes cambiar esta configuración.

Las propiedades importantes que se incluyen en la respuesta son organization, environment, aPIProxy, name y state. Si revisas estos valores de propiedad, puedes confirmar que una revisión específica de un proxy de API se haya implementado en un entorno.

Ver todas las implementaciones en el entorno de pruebas

También puedes recuperar el estado de la implementación para un entorno específico (incluido el número de revisión del proxy de API implementado actualmente) mediante la siguiente llamada:

curl -u EMAIL:PASSWORD
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments

Esta opción muestra el mismo resultado que el anterior para cada API implementada en el entorno de pruebas

Ver todas las implementaciones de tu organización

Para recuperar una lista de todas las revisiones implementadas actualmente de todos los proxies de API en todos los entornos, usa el siguiente método de API:

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \
  -u EMAIL:PASSWORD

Se muestra el mismo resultado que el de arriba para todos los proxies de API implementados en todos los entornos.

Como la API es RESTful, puedes usar el método POST, junto con una carga útil de JSON o XML, en el mismo recurso para crear un proxy de API.

Se generará un perfil para tu proxy de API. La representación predeterminada de un proxy de API se encuentra en la notación de objetos de JavaScript (JSON). A continuación, se muestra la respuesta JSON predeterminada a la solicitud POST anterior, que creó un proxy de API llamado weatherapi. A continuación, se proporciona una descripción de cada elemento del perfil:

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1357172145444,
  "createdBy" : "you@yourcompany.com",
  "displayName" : "weatherapi",
  "lastModifiedAt" : 1357172145444,
  "lastModifiedBy" : "you@yourcompany.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

El perfil de proxy de API que se genera demuestra la estructura completa de un proxy de API:

  • APIProxy revision: La iteración numerada de forma secuencial de la configuración del proxy de API, como la mantienen los Servicios de API
  • APIProxy name: Es el nombre único del proxy de API.
  • ConfigurationVersion: Es la versión de los servicios de API a la que se ajusta la configuración de proxy de API.
  • CreatedAt: Hora en la que se generó el proxy de API, con formato de tiempo UNIX
  • CreatedBy: Dirección de correo electrónico del usuario de Apigee Edge que creó el proxy de API
  • DisplayName: Es un nombre fácil de usar para el proxy de API.
  • LastModifiedAt: Hora en la que se generó el proxy de la API, con formato de tiempo UNIX
  • LastModifiedBy: Dirección de correo electrónico del usuario de Apigee Edge que creó el proxy de API
  • Policies: Es una lista de políticas que se agregaron a este proxy de API.
  • ProxyEndpoints: Una lista de ProxyEndpoints con nombre
  • Resources: Es una lista de recursos (JavaScript, Python, Java, XSLT) disponibles para ejecutar en este proxy de API
  • TargetServers: Una lista de TargetServers con nombre (que se pueden crear con la API de Management), que se usa en configuraciones avanzadas para fines de balanceo de cargas
  • TargetEndpoints: Una lista de TargetEndpoints con nombre

Ten en cuenta que muchos de los elementos de la configuración del proxy de API que se creó con el método POST simple anterior están vacíos. En los siguientes temas, aprenderás a agregar y configurar los componentes clave de un proxy de API.

También puedes leer sobre estos elementos de configuración en la referencia de configuración del proxy de API.

Secuencia de comandos con la API

En la sección Usa los proxies de API de muestra, disponible en GitHub, se proporcionan secuencias de comandos de shell que unen la herramienta de implementación de Apigee. Si por algún motivo no puedes usar la herramienta de implementación de Python, puedes llamar directamente a la API. Ambos enfoques se demuestran en las secuencias de comandos de ejemplo que aparecen a continuación.

Une la herramienta de implementación

Primero, asegúrate de que la herramienta de implementación de Python esté disponible en tu entorno local.

Luego, crea un archivo para guardar tus credenciales. Las secuencias de comandos de implementación que escribas importarán esta configuración, lo que te ayudará a administrar de forma centralizada las credenciales de tu cuenta. En la muestra de la plataforma de API, este archivo se llama setenv.sh.

#!/bin/bash

org="Your ORG on enterprise.apigee.com"
username="Your USERNAME on enterprise.apigee.com"

# While testing, it's not necessary to change the setting below
env="test"
# Change the value below only if you have an on-premise deployment
url="https://api.enterprise.apigee.com"
# Change the value below only if you have a custom domain
api_domain="apigee.net"

export org=$org
export username=$username
export env=$env
export url=$url
export api_domain=$api_domain

El archivo anterior pone a disposición toda tu configuración para las secuencias de comandos de shell que unen la herramienta de implementación.

A continuación, crea una secuencia de comandos de shell que importe esa configuración y la use para llamar a la herramienta de implementación. (Para ver un ejemplo, consulta las muestras de la plataforma de la API de Apigee).

#!/bin/bash

source path/to/setenv.sh

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Deploying $proxy to $env on $url using $username and $org

path/to/deploy.py -n {api_name} -u $username:$password -o $org -h $url -e $env -p / -d path/to/apiproxy

Para simplificarte mucho las cosas, también crea una secuencia de comandos para invocar y probar la API, como se indica a continuación:

#!/bin/bash

echo Using org and environment configured in /setup/setenv.sh

source /path/to/setenv.sh

set -x

curl "http://$org-$env.apigee.net/{api_basepath}"

Cómo invocar directamente la API

Puede ser útil escribir secuencias de comandos de shell simples que automaticen el proceso de carga y de implementación de proxies de API.

La siguiente secuencia de comandos invoca directamente la API de Management. Anula la implementación de la revisión existente del proxy de API que estás actualizando, crea un archivo ZIP del directorio /apiproxy que contiene tus archivos de configuración del proxy y, luego, sube, importa y, luego, implementa la configuración.

#!/bin/bash

#This sets the name of the API proxy and the basepath where the API will be available
api=api

source /path/to/setenv.sh

echo Delete the DS_store file on OSX

echo find . -name .DS_Store -print0 | xargs -0 rm -rf
find . -name .DS_Store -print0 | xargs -0 rm -rf

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Undeploy and delete the previous revision

# Note that you need to explicitly update the revision to be undeployed.
# One benefit of the Python deploy tool is that it manages this for you.

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X DELETE

curl -k -u $username:$password -X DELETE "$url/v1/o/$org/apis/$api/revisions/1"

rm -rf $api.zip

echo Create the API proxy bundle and deploy

zip -r $api.zip apiproxy

echo Import the new revision to $env environment 

curl -k -v -u $username:$password "$url/v1/o/$org/apis?action=import&name=$api" -T $api.zip -H "Content-Type: application/octet-stream" -X POST

echo Deploy the new revision to $env environment 

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X POST