¿Qué es un API?

Casi trece años han pasado desde que me inicié en el mundo de la programación, años en los que la tecnología ha sufrido grandes cambios e increíbles transformaciones, así como un aumento de su potencial en cuanto a datos e interoperatividad. Allá por el año 2002 internet no era una herramienta presente en todos los hogares y su conexión se limitaba simplemente a nuestros PCs de sobremesa. Aún recuerdo con nostalgia aquellos programas de gestión de stock, registros, entradas/salidas, programados en C o en visual Basic y con una base de datos local al dispositivo. Pronto comenzaron a proliferar las versiones web de todos esos programas, y con ellas, el desarrollo en otros lenguajes como java, javascript, .net y un largo etc... Como consecuencia de estas versiones web, los programas aislados y centrados en instalación en computador, se quedaron obsoletos ya que era necesario rehacer su lógica para ser llevados a la web, con su correspondiente inversión, debido a tener que deshacerse de un software anticuado e invertir en el desarrollo de uno nuevo. A día de hoy, el mundo está conectado entre sí mediante internet, a través de una amplia gama de dispositivos, como pcs, portátiles, smartwatches, tablets o móviles. Con el auge de nuevas tendencias como la domótica, el IOT (internet of things) o las smartcities, todo apunta a que no solo nosotros, sino cada dispositivo a nuestro alrededor compartirá información con la red de redes.¿Cómo podemos solucionar este problema? ¿Creamos una aplicación web, una app móvil, otra para nuestro reloj y otra para un sensor ubicado en un detector de humo? No. La solución a nuestro problema son las APIs. Application Programming Interface (API) es un conjunto de funciones, subrutinas, métodos (en función del lenguaje de programación) que pueden ser reutilizados por otro software. Todo esto en un argot demasiado técnico puede sonar muy poco digerible, así que pongamos un ejemplo práctico: Un cocinero, quiere preparar un plato elaborado, para lo que necesita varios ingredientes: patatas, zanahorias, guisantes, carne y huevos. Sin embargo no basta con eso, sino que es necesario pelar y freír las patatas, cocer las zanahorias y los guisantes, asar la carne y freír los huevos. Todas estas tareas tienen que ser desarrolladas por el cocinero siempre que quiera preparar el plato.Ahora supongamos que tenemos un robot de cocina, que admite unos datos de entrada (los alimentos) y nos genera una salida o resultado (el plato ya cocinado). En este ejemplo tan sencillo el cocinero sería el programador y el robot de cocina el API, que nos permite evitar realizar las mismas tareas (pelar patatas, freír huevos, asar carne…) cada vez que preparamos el mismo plato y centrarnos en la presentación del mismo.Este planteamiento en programación nos evitar tener que repetir el proceso lógico o "tarea de cocinar" (por ejemplo la introducción de datos en un programa de gestión) y centrarnos en la visualización o “presentación del plato” (una web o una app móvil). Por lo tanto nuestro "cocinero" solo tendría que preocuparse de "decorar el plato en función del cliente" puesto que "sus patatas ya están fritas". En conclusión, un API nos permite realizar un conjunto de tareas individuales de forma agrupada y sencilla, evitando repetir cada lógica y permitiéndonos optimizar nuestro rendimiento en el desarrollo.