Microsoft Azure Api Management

Api-Management
Cada vez son más las compañías que ofrecen su información a terceros con el fin de integrar su negocio en otros lugares de Internet. Cuando nuestra información es importante para otros, la forma más común de compartirla es a través de Apis. Esto a veces no es una tarea fácil, ya que debemos tener en cuenta cuotas, autenticación, cacheo, análisis del tráfico, límite de llamadas, etcétera. Para ello Microsoft Azure ha puesto a nuestra disposición un nuevo servicio llamado Api Management, el cual nos permite administrar todas las Apis de nuestra organización de una forma centralizada.

Crear cuenta de Api Management

Para poder utilizar este servicio es necesario crear una cuenta a través del portal de Microsoft Azure:

Create an Api Management Service

Utilizamos la opción NEW del menú inferior y lanzamos el asistente para la creación. Deberemos elegir un nombre, que formará parte de la URL del servicio, y la región donde estará ubicado.:

Create an Api Management Service Wizard

Por otro lado es necesario especificar el nombre de la organización y un correo electrónico para el administrador.

Create an Api Management Service Organization Name

Las opciones avanzadas simplemente nos permiten seleccionar el tipo de cuenta (TIER) que necesitamos: Developer o Standard. Esta información puede ser cambiada más adelante desde el portal, en el apartado SCALE.

Aceptamos los cambios y esperamos a que termine la creación. Este proceso puede durar hasta 30 minutos.

Your Api management service was created

Una vez que la creación de la cuenta ha terminado tenemos dos portales: uno para la administración del servicio, independiente del portal de Microsoft Azure, y otro para los desarrolladores o usuarios que utilizarán las Apis. En el primero de ellos, tenemos un conjunto de opciones que nos permitirán agregar Apis, políticas, modificar el portal del desarrollador, etcétera.

Agregar Apis al servicio

Para poder contaros este servicio, he creado una Api en .NET, que agregaremos a Api Management y expondremos a los desarrolladores:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace WebApi.Controllers
{
    public class TestController : ApiController
    {
        static List<string> list = new List<string> { "Barney", "Robin", "Ted", "Lily" };
        // GET: api/Test
        public IEnumerable<string> Get()
        {
            return list;
        }
        // GET: api/Test/5
        public string Get(int id)
        {
            return list[id];
        }
        // POST: api/Test
        public void Post([FromBody]string value)
        {
            list.Add(value);
        }
        // PUT: api/Test/5
        public void Put(int id, [FromBody]string value)
        {
            if (id < list.Count)
            {
                list[id] = value;
            }
        }
        // DELETE: api/Test/5
        public void Delete(int id)
        {
            if (id < list.Count)
            {
                list.RemoveAt(id);
            }
        }
    }
}

Accedemos al portal de administración a través de cualquiera de los dos enlaces del portal de Azure, botón MANAGE del menú inferior o a través del enlace Management console. En la página de administración utilizamos la acción ADD API en el DASHBOARD o desde la sección APIS, como se muestra en la imagen:

Add API

Los datos que debemos indicar para la creación de una nueva Api son los siguientes: un nombre descriptivo de la misma, la URL donde está alojada (en este ejemplo he desplegado la Api anterior en el servicio de Microsoft Azure Web sites, pero podría estar en cualquier otro hosting) y el sufijo por el cual nos vamos a referir a ella dentro de la cuenta de Api Management.

Add New Api

Una vez que haya finalizado la creación, el asistente nos llevará a la nueva Api donde podremos dar de alta las operaciones o métodos que el desarrollador podrá utilizar. Para ello basta con hacer clic sobre la opción ADD OPERATION:

New Api Add Operation

Para que este ejemplo resultara lo más sencillo posible, he utilizado la convención de ASP.NET Web Api con la que podemos utilizar la misma URL cambiando únicamente el Http Verb en cada petición, para llevar a cabo la obtención, creación, modificación y eliminación de elementos. En el asistente New operation damos de alta cada una de las operaciones utilizando como URL /test, ya que es el nombre del controller de Web Api, escribimos un nombre descriptivo para cada acción y utilizamos el HTTP Verb que corresponda:

New operation GET

En aquellas operaciones donde sea necesario obtener el id, basta con modificar la URL template y añadir {id} al final de la dirección, tal y como se muestra en la siguiente imagen:

New Operation URL template

Por otro lado, podemos elegir el tipo de dato que se espera para dicho Id en el apartado Request > Parameters:

Api New Operation Request Parameters

Esta información se utilizará para la documentación de la Api. Una vez que hayamos terminado de añadir todas las operaciones, veremos el listado de las mismas en el apartado operations, con el fin de poder modificarlas en un futuro:

Api Operations

Productos

Para que una Api pueda ser expuesta a los desarrolladores/clientes, esta debe estar contenida dentro de lo que se conoce como Product en Api Management. Un producto nos permite agrupar varias Apis, controlar el acceso a las mismas mediante grupos, etcétera.

Api Management Products

Para este ejemplo crearemos un nuevo producto, a través de ADD PRODUCT donde deberemos asignar un nombre, una descripción (opcional) y marcaremos Require suscription approval:

Api Management Add New Product

Una vez creado, hacemos clic sobre el nuevo elemento en el listado de la sección PRODUCTS y añadiremos la Api que dimos de alta en el paso anterior, a través de la opción ADD API TO PRODUCT.

Add Api to product

El último paso sería publicarlo a través de la opción PUBLISH, con el fin de que la Api sea visible para los desarrolladores:

Api Management Product Publish

Usuarios y grupos

Para que un usuario/cliente/desarrollador pueda acceder al producto creado anteriormente, este debe tener un usuario dentro de la cuenta de Api Management. Existen dos formas de dar de alta un usuario: creando una cuenta de forma manual, asociando un email y contraseña a través de la opción ADD USER, o bien permitiendo al usuario que configure su propia credencial a través de una invitación utilizando INVITE USER:

Api management Users ADD USER INVITE USER

Si el usuario es creado a través de invitación, el mismo no será visible hasta que el desarrollador haya elegido su contraseña a través del correo electrónico recibido (es necesario comprobar que la dirección apimgmt-noreply@mail.windowsazure.com no esté en SPAM). Una vez que el usuario haya elegido su contraseña, podrá acceder al apartado PRODUCTS y suscribirse a nuestra Api:

Api management product subscribe

Como marcamos la opción Require suscription approval durante la creación del producto, el usuario recibirá el siguiente mensaje a la espera de ser aprobada su solicitud al producto:

Api Management Product you'll be notified

Cuando un administrador acceda al portal, podrá ver en el Dashboard que alguno de los productos tiene peticiones pendientes de aprobar/denegar:

Api Management Dashboard Alert Product Request

Seleccionamos el producto y aceptamos el acceso al nuevo usuario a través de la pestaña Subscription requests:

Api Management Suscription Request

A partir de este momento, el usuario tendrá acceso a las operaciones dadas de alta en la Api y se le asignará además un token (subscription key) para poder acceder a la misma.

Probando la Api

El último paso de este post es probar la Api que hemos configurado dentro del servicio Api Management de Microsoft Azure. Con el nuevo usuario accedemos al nuevo portal a través de https://[ACCOUNT_NAME].portal.azure-api.net/ o bien haciendo clic en el enlace superior Developer Portal del sitio de administración. Seleccionamos la opción APIS donde podremos ver el listado de las apis disponibles y seleccionamos la creada durante este post:

Developer portal APIS returngis

Cuando accedemos a cualquiera de ellas podemos observar que en el lado izquierdo aparecerá el listado de las operaciones disponibles y, por cada una de ellas, la opción de abrir una consola y lanzar peticiones o bien copiar el código de cliente en diferentes lenguajes:

Testing Api

Esta ha sido una introducción general al nuevo servicio de administración de Apis, con el objetivo de entender cuál es la intención del mismo.

Espero que haya sido de utilidad.

¡Saludos!