Cómo usar Azure API Management para hacer su vida más fácil
Una de las evoluciones más emocionantes en la web hoy en día es el número cada vez mayor de API disponibles públicamente, expuestas por empresas e individuos.
Una de las evoluciones más emocionantes en la web hoy en día es el número cada vez mayor de API disponibles públicamente, expuestas por empresas e individuos. Estas API permiten a sus propietarios exponer datos de sistemas internos a Internet para que los desarrolladores externos puedan comenzar a jugar con ellos. Sitios web como ProgrammableWeb enumeran todas esas API, y la lista crece cada día.
Lo que todo esto significa es que, en lugar de crear una aplicación que aproveche tus datos o servicios, simplemente publicas una API y dejas que otras personas creen aplicaciones. O bien, podrías hacer ambas cosas. Facebook, Twitter y Google, por ejemplo, tienen sus propias aplicaciones, pero también publican sus servicios y datos en las API.
Crear una API de este tipo es una cosa, la otra cosa es publicarla, mantenerla y documentarla. Probablemente no quieras que todo el mundo tenga acceso ilimitado a tus desarrollos, es posible que quieras tener un sitio de documentación con ejemplos y también, naturalmente, quieras monetizarlo.
Ahora, aquí están las buenas noticias: la API de administración de Azure hace todo esto y más. Le permite publicar su API en Internet, generar automáticamente muestras de código y documentación, configurar el acceso y la limitación, analizar el uso de su API y más.
¿Qué vamos a mostrar?
En esta entrada de blog, publicaremos un origen de datos interno en la nube mediante la creación de una API, publicada en la API de administración de Azure. Esto implica los siguientes pasos:
- Create a Web API
- Publicación de esta API web en una aplicación web de Azure
- Publish to Azure Management API
- Úselo en un proyecto de cliente
Create a Web API That Publishes Data
En el post de hoy voy a crear un proyecto de API web ASP.NET para publicar una fuente de datos ficticia. Puede ser una base de datos interna, por ejemplo, resultados de exámenes, datos de análisis o lo que sea. En aras de la simplicidad, no voy a publicar una fuente de datos real, sino a crear códigos auxiliares para simular una fuente de datos. En cualquier caso, los pasos a seguir son exactamente los mismos.
Voy a publicar nuestro origen de datos ficticio en Azure, ya que es la solución más sencilla. No dudes en seguirlo: necesitarás una suscripción activa (gratuita) a Azure. Como alternativa, puede implementarlo en cualquier sitio web de IIS, siempre que esté disponible en Internet.
Así que, estira los músculos, chasquea los dedos y ¡manos a la obra!
Para empezar, abra Visual Studio. Estoy usando Visual Studio 2015, pero esto también debería funcionar en diferentes versiones. Haga clic en Archivo -> nuevo proyecto y elija Visual C# -> Web -> ASP.NET Aplicación web.

Introduzca un nombre y una ubicación útiles y haga clic en Aceptar.
En la siguiente pantalla puedes elegir una plantilla. Estoy usando la plantilla de API web en ASP.NET 4.5.2 y le ordeno que se hospede en Azure:

Además, haga clic en Cambiar autenticación y configúrelo en Sin autenticación:

Haga clic en Aceptar en esta pantalla y en Aceptar en la pantalla Nuevo proyecto. En la ventana emergente de Azure, debe introducir los detalles de la aplicación web de Azure. He decidido crear una nueva aplicación web de Azure en el Este de Australia:

Haga clic en Aceptar y se creará el proyecto. Esto puede tomar un minuto, ¡así que toma una taza de café para que estés listo para el siguiente bocado!
La plantilla de API web predeterminada contiene muchas cosas, la mayoría de las cuales no necesitaremos. Pero quiero centrarme en el lado de Azure API Management, por lo que no voy a limpiar el proyecto.
La plantilla predeterminada contiene un ApiController, denominado ValueController. Presione F5 y navegue hasta /api/values. Debería ver los dos valores de prueba:

En tu API de producción probablemente no quieras empezar usando esta plantilla, y te aconsejo que empieces desde cero y sólo añadas lo que necesites. Pero en nuestro caso, esta plantilla predeterminada funcionará bien.
Un servicio de API web es un servicio RESTFUL. Una desventaja de esto es que no se obtiene una definición legible por máquina. Azure API Management requerirá una definición de Swagger o WADL. De forma predeterminada, esto no está disponible, así que voy a agregar esto ahora agregando Swashbuckle. Abra el Administrador de paquetes de NuGet, busque Swashbuckle y agregue Swashbuckle.Net45 al proyecto:

Haga clic en F5 y vaya a /swagger para ver lo siguiente:

Vamos a crear nuestra API de administración de Azure
Antes de que Azure pueda administrar nuestra API, debemos publicarla en Azure. Haga clic con el botón derecho en el proyecto de API y seleccione Publicar:

Puede dejar toda la configuración predeterminada como está y hacer clic en Publicar. ¡Espera, espera, espera, y tu navegador debería abrirse y mostrar tu sitio web público! ¡Guau!


Ahora, vaya a /swagger y copie la URL de la documentación en el portapapeles o en el bloc de notas. En mi caso, fue esta URL: http://azureapidemo0955.azurewebsites.net:80/swagger/docs/v1
A continuación, vaya al "antiguo" Portal de Azure (manage.windowsazure.com), ya que esta funcionalidad no está disponible en el nuevo portal de vista previa (portal.azure.com). Haga clic en Nuevo -> App Services -> API Management -> crear:

Elija un nombre, una suscripción, una región y presione Siguiente:

En la siguiente pantalla, debe ingresar los datos de contacto:

No es necesario establecer la configuración avanzada, ya que la configuración predeterminada (por ejemplo, el nivel de precios del desarrollador) es suficiente. Presione la marca de verificación para Completar.
Probablemente quieras hacer otra cosa por un tiempo, ya que esto puede llevar hasta 30 minutos. ¡Toma algo para comer tal vez y regresa una vez que hayas terminado!
Manage the Azure API Management Service
Cuando el aprovisionamiento esté listo, selecciónelo (¡no haga clic en el título!) y haga clic en Administrar en el pie de página. Se abrirá el Portal de administración de API de Azure.

Haga clic en Importar API, seleccione "Desde URL" e ingrese los detalles:

Agregué la API al grupo de productos "Ilimitados". Por alguna razón, recibí el error:
"Acceso denegado debido a la falta de la clave de suscripción. Asegúrese de incluir la clave de suscripción al realizar solicitudes a una API" al realizar pruebas desde el portal de API, ya que ese encabezado no se rellenó previamente en ese momento. Presione Guardar y haga clic en Portal del desarrollador en el encabezado:

¡Lo que ves ahora es el portal público para desarrolladores de tu propia API! Este es el punto de partida para cualquiera que utilice su API. Las personas pueden leer la documentación, probar su API y registrarse para usarla.
Haga clic en API -> Azure API Demo -> Values_Get - GET 1 para probar el método GetAll. Pulsa Enviar y verás cómo se produce la magia. El Portal de API de Azure llama a la API web y muestra el siguiente resultado:

Ahora hemos establecido lo básico. La API se administra mediante Azure API Management, hay un portal para desarrolladores donde los usuarios pueden iniciar sesión, etc.
Aproveche la API protegida de nuestro controlador MVC
Voy a demostrar que puedo consumir la API del proyecto creado anteriormente e implementar la limitación. En primer lugar, añade el producto "Starter" a la API. En el Portal de administración de API de Azure, haga clic en API -> AzureApiDemo -> Products y agregue Starter.

A continuación, vaya al Portal del desarrollador y haga clic en Administrador -> Perfil. Copie la clave principal de la suscripción Starter:

Copie este valor en el bloc de notas.
Nuestro proyecto de API web también contenía una parte MVC que representa la documentación. Voy a agregar un código para mostrar que podemos llamar la API, administrada por Azure API Management.
A continuación, abra Controllers -> HomeController y reemplace el método Index por lo siguiente:
public ActionResult Index()
{
ViewBag.Title = "Home Page";
var wr = WebRequest.CreateHttp("https://azureapidemo.azure-api.net/api/Values");
wr.Headers.Add("Ocp-Apim-Subscription-Key", "b690fce8fe4a44a8b42834c1d040cd31");
using (var response = wr.GetResponse())
{
var html = new StreamReader(response.GetResponseStream()).ReadToEnd();
ViewBag.WebResponse = html;
}
return View();
}
Reemplace la clave de suscripción por la que copió anteriormente.
Por último, agregue @ViewBag.WebResponse en algún lugar de Vista en Vistas -> Inicio -> Index.cshtml

Si ahora presiona F5, verá la respuesta de la API web, a través del servicio de API de administración de Azure.
Pero, cuando actualice el navegador 6 veces, obtendré una excepción:

Esto es solo el comienzo
En la publicación de hoy, lo que espero haber mostrado es cómo puede publicar una API en la API de administración de Azure y proteger su uso con la limitación de uso. Pero eso es solo el comienzo: hay mucho más que se puede hacer. Aquí hay algunas características adicionales que definitivamente debería tener en cuenta:

1. Statistics
En el Portal del desarrollador, haga clic en Administrador > Administrar
Esto le llevará a la vista de análisis en el Portal de administración con una amplia gama de datos de análisis.

2. Productos
Abordamos brevemente esto agregando nuestra API al producto "Ilimitado" y "Inicio". Un producto define quién puede usarlo y con qué frecuencia. Por ejemplo, el grupo predeterminado "Starter" permite a los usuarios ejecutar hasta 5 llamadas por minuto con un máximo de 100 por semana.
Consulte el sitio de Microsoft para obtener más información.
3. Conéctese a las API internas con Azure Direct Connect
En mi ejemplo, he publicado la API en una aplicación web pública de Azure. En la mayoría de los casos, la API reside en la red interna. Con Azure ExpressRoute, puede hacer que su API esté disponible para la API de administración de Azure a través de VPN. La API seguirá oculta al mundo exterior, solo Azure puede acceder a ella. Consulte aquí para obtener más información.
También le sugiero que consulte la documentación avanzada en el sitio de Azure para ver ejemplos aún más impresionantes.
Si todo va bien, hoy mismo habrá aprendido a publicar una API en una aplicación web pública de Azure, y habrá tomado al menos una taza de café y un almuerzo ligero. ¡Ponte en contacto en la sección de comentarios a continuación y comparte tus pensamientos!
¿Desea crear sus aplicaciones de escritorio, móviles o web con controles de alto rendimiento? ¡Descargue la versión de prueba gratuita de Ultimate ahora y vea lo que puede hacer por usted!