¿Qué es una API? Interfaces de programación de aplicaciones explicadas

API significa interfaz de programación de aplicaciones, un concepto que se aplica en todas partes, desde herramientas de línea de comandos hasta código Java empresarial y aplicaciones web Ruby on Rails. Una API es una forma de interactuar mediante programación con un componente o recurso de software separado.

A menos que escriba cada línea de código desde cero, interactuará con componentes de software externos, cada uno con su propia API. Incluso si escribe algo completamente desde cero, una aplicación de software bien diseñada tendrá API internas para ayudar a organizar el código y hacer que los componentes sean más reutilizables. Y existen numerosas API públicas que le permiten aprovechar la funcionalidad desarrollada en otros lugares de la web.

¿Qué es una API?

Una API se define como una especificación de posibles interacciones con un componente de software. ¿Qué significa eso exactamente? Bueno, imagine que un automóvil era un componente de software. Su API incluiría información sobre qué puede hacerlo: acelerar, frenar, encender la radio, etc. También incluiría información sobre cómo podrías hacer que haga esas cosas. Por ejemplo, para acelerar, pones el pie en el acelerador y presionas.

La API no tiene que explicar qué sucede dentro del motor cuando pones el pie en el acelerador. Por eso, si aprendió a conducir un automóvil con un motor de combustión interna, puede ponerse al volante de un automóvil eléctrico sin tener que aprender un conjunto completamente nuevo de habilidades. los qué y cómo la información se junta en la API definición, que es abstracto y separado del automóvil en sí.

Una cosa a tener en cuenta es que el nombre de algunas API a menudo se usa para referirse tanto a la especificación de las interacciones como al componente de software real con el que interactúa. La frase "API de Twitter", por ejemplo, no solo se refiere al conjunto de reglas para interactuar programáticamente con Twitter, sino que generalmente se entiende que significa lo que interactúa, como en "Estamos haciendo un análisis de los tweets que recibimos de la API de Twitter ".

API como capa de abstracción

Cuando se trata de software, las API están literalmente en todas partes. Las API van de la mano con uno de los conceptos más fundamentales en informática: la abstracción. La abstracción es solo una forma de organizar la complejidad de un sistema para que las acciones complicadas puedan manejarse de una manera simple. Piense en esta abstracción como los botones de Amazon Dash, las placas de circuito de botón pulsador que puede usar para pedir productos básicos de Amazon. Esto es lo que parecen:

botones de amazon dash IDG

Algunos ejemplos de botones de Amazon Dash. Pida más detergente o toallas de papel con solo presionar un botón.

Solicita un botón Dash de Amazon y utiliza una aplicación en su teléfono inteligente para asociarlo con su red Wi-Fi, su cuenta de Amazon y un producto, por ejemplo, su marca favorita de toallas de papel. Luego, cada vez que desee pedir más toallas de papel, simplemente presione el botón. El botón Dash se conecta a Internet y envía un mensaje para realizar un pedido en su cuenta. Unos días después, llegan toallas de papel a su puerta.

Al igual que una API, el botón Dash es una interfaz maravillosamente simple que oculta todo tipo de complejidad detrás de escena. El ID del producto que ordenó debe recuperarse de alguna base de datos. Su dirección de entrega debe extraerse de su cuenta. Debe determinarse el centro de despacho más cercano que almacena sus toallas de papel, luego debe notificarse para eliminar un artículo del stock disponible y empaquetarlo. Finalmente, el paquete debe enrutarse a través de alguna combinación de aviones, camiones y camionetas junto con otros paquetes de una manera que garantice que todos los paquetes lleguen a sus destinos de manera eficiente.

Ahora imagine que tiene que coordinar todas estas cosas como cliente. Nunca pediría toallas de papel porque es demasiado complicado y requiere mucho tiempo y tiene mejores cosas que hacer. Afortunadamente, toda la prueba se abstrae de ti. Hay una larga cadena interconectada de sistemas informáticos y procesos humanos que hacen que esas toallas de papel aparezcan en su puerta, pero todo lo que tiene que pensar es presionar un botón.

Así son las API para los programadores. Toman una cantidad abrumadora de complejidad y definen un conjunto relativamente simple de interacciones que puede utilizar en lugar de hacerlo todo usted mismo. En cualquier proyecto de software, es probable que esté utilizando decenas, si no cientos, de API directamente, y cada una de esas API depende de otras API, etc.

API públicas e integración de API

Las API son un concepto de larga data en la programación de computadoras, y han sido parte de los conjuntos de herramientas de los desarrolladores durante años. Tradicionalmente, las API se usaban para conectar componentes de código que se ejecutan en la misma máquina. Con el auge de las redes ubicuas, cada vez más API públicas, aveces llamado API abiertas, han estado disponibles API públicas son externos y accesibles a través de Internet, lo que le permite escribir código que interactúa con el código de otros proveedores en línea; este proceso se conoce como Integración API.

Este tipo de mashups de código permite a los usuarios mezclar y combinar la funcionalidad de diferentes proveedores en sus propios sistemas. Por ejemplo, si usa el software de automatización de marketing Marketo, puede sincronizar sus datos allí con la funcionalidad de Salesforce CRM.

"Abierto" o "público" no debe interpretarse como "gratuito" en este contexto. Todavía necesita ser un cliente de Marketo y Salesforce para que esto funcione. Pero la disponibilidad de estas API hace que la integración sea un proceso mucho más simple de lo que sería de otra manera. (InfoWorld tiene un gran lista de API públicas que debe conocer).

Servicios web y API

Quizás recuerdes el término wservicios de eb de principios de los años 2000 y creo que la idea de una API abierta suena bastante similar. De hecho, un servicio web es un tipo específico de API abierta, una que cumple con un conjunto bastante rígido de especificaciones, incluido el hecho de que se especifiquen en el Lenguaje de descripción de servicios web (WSDL), una variante XML.

Los servicios web estaban destinados a ser utilizados como parte de una arquitectura orientada a servicios (SOA). Como explica el blog Nordic APIs, eso le dio a los servicios web algo de mal nombre, ya que las SOA nunca estuvieron a la altura de su potencial. Los avances en las técnicas utilizadas para las comunicaciones de servicio a servicio, especialmente REST más ligero y flexible, también han dejado a los servicios web algo rezagados en el mundo de las API públicas.

API REST

Los servicios web se diseñaron originalmente para comunicarse mediante SOAP (Protocolo simple de acceso a objetos), un protocolo de mensajería que envía documentos XML a través de HTTP. Hoy, sin embargo, la mayoría de las API basadas en la web utilizan REST (Transferencia de estado representativo) como un estilo arquitectónico.

REST fue presentado formalmente por Roy Fielding en su disertación doctoral en 2000. Es un conjunto de componentes arquitectónicos, principios de diseño e interacciones utilizados para construir sistemas distribuidos que involucran medios de cualquier tipo (texto, video, etc.). En esencia, REST es un estilo de construcción de sistemas que permite una comunicación flexible y la visualización de información en la web, al tiempo que proporciona la estructura necesaria para construir fácilmente componentes de propósito general.

En una API REST, un recurso podría ser prácticamente cualquier cosa, pero los ejemplos incluyen un usuario, una lista de tweets y los resultados actuales de una búsqueda de tweets. Cada uno de estos recursos es direccionable en un identificador de recurso, que en el caso de las API REST basadas en la web suele ser una URL, como https://api.twitter.com/1.1/users/show?screen_name=twitterdev. Cuando una aplicación solicita un recurso utilizando el identificador, la API entrega el actual representación de ese recurso a la aplicación en un formato que la aplicación puede consumir, como una imagen JPEG, una página HTML o JSON.

Uno de los grandes diferenciadores de REST es que implica el envío de datos a la aplicación solicitante. Si bien esto proporciona una gran flexibilidad, permitiendo que la aplicación haga lo que quiera con los datos, tiene un costo de eficiencia. El envío de datos a través de la web para su procesamiento es bastante lento en comparación con el procesamiento donde residen los datos y luego se envían los resultados.

Por supuesto, el problema con el enfoque "eficiente" es que los sistemas que alojan los datos necesitarían saber con anticipación qué aplicaciones quieren hacer con ellos. Por lo tanto, para construir una API que tenga usabilidad y flexibilidad de uso general, REST es el camino a seguir.

Ejemplos de API

Existen muchas API públicas para interactuar, muchas de las gigantes de la industria. La capacidad de acceder al código de alguna compañía de plataforma mediante programación a través de una API es lo que los convierte en una plataforma, en esencia. Algunos ejemplos destacados de API incluyen:

  • API de Google, que le permiten conectar su código a toda la gama de servicios de Google, desde Maps hasta Translate. Las API son tan importantes para Google que adquirieron Apigee, una plataforma líder de administración de API.
  • API de Facebook, que le permiten acceder mediante programación a las herramientas de marketing y gráficos sociales de Facebook. (La compañía ha estado restringiendo a qué datos de usuario puede acceder a través de estas API en las consecuencias de Cambridge Analytica y otros escándalos).

Para tener una idea de cómo funcionan las API, profundicemos en dos: la API de Java, que los desarrolladores de Java usan para interactuar con la plataforma Java, y la API de Twitter, una API pública que usaría para interactuar con las redes sociales. servicio de redes.

La API de Java

La API de Java es una biblioteca de componentes de software disponibles "listos para usar" para cualquier persona que haya instalado el Kit de desarrollo de Java. Estos componentes implementan tareas comunes y generalmente aumentan la productividad porque los programadores no tienen que comenzar desde cero todo el tiempo. Uno de los componentes básicos utilizados en el software es algo llamado Lista, que, como es de esperar, realiza un seguimiento de una lista de elementos. La API de Java define qué puede hacerlo con una Lista: agregue elementos, ordene la lista, determine si un elemento está en la lista, etc. También especifica cómo para realizar esas acciones. Para ordenar la Lista, debe especificar cómo desea que se ordene la lista: alfabéticamente, numéricamente descendente, del color más brillante al más opaco, etc.

tipo api openjdk IDG

La documentación de la API OpenJDK para el método de clasificación de una Lista. El comparador es el parámetro que determina cómo se ordena la lista.

La API de Twitter

La API de Twitter es una API JSON basada en la web que permite a los desarrolladores interactuar mediante programación con datos de Twitter. A diferencia de la API de Java, que se incluye en el Kit de desarrollo de Java, la API de Twitter es una API basada en la web. Se debe acceder haciendo solicitudes por Internet a los servicios que aloja Twitter.

Con una API basada en la web como la de Twitter, su aplicación envía una solicitud HTTP, al igual que lo hace un navegador web. Pero en lugar de que la respuesta se entregue como una página web, para la comprensión humana, se devuelve en un formato que las aplicaciones pueden analizar fácilmente. Existen varios formatos para este propósito, y Twitter usa un formato popular y fácil de usar llamado JSON. (Si no está familiarizado con JSON, es posible que desee dedicar unos minutos a leerlo aquí).

Uno de los elementos básicos en Twitter es un tweet. La API de Twitter te dice qué puede hacerlo con los tweets: buscar tweets, crear un tweet, marcar un tweet como favorito. También te dice cómo para realizar estas acciones. Para buscar tweets, debe especificar sus criterios de búsqueda: términos o hashtags para buscar, geolocalización, idioma, etc.

api de búsqueda de twitter IDG

Twitter Buscar en la documentación de la API. Aquí encontrará todos los detalles que necesita para consultar el universo de los tweets, desde los operadores de búsqueda disponibles hasta el formato de las respuestas.

Diseño API

El diseño de la API es el proceso mediante el cual se formulan el "qué" y el "cómo" de una API. Al igual que con cualquier otra cosa que se pueda crear, se incorporan diferentes niveles de pensamiento y cuidado en el diseño de la API, lo que resulta en diferentes niveles de calidad de la API. Las API bien diseñadas tienen un comportamiento constante, tienen en cuenta su contexto y tienen en cuenta las necesidades de sus usuarios.

El comportamiento constante dentro de una API afecta en gran medida la velocidad a la que se puede aprender y la probabilidad de que los programadores cometan errores al usarlo. En general, las API que realizan acciones similares deben comportarse de manera similar, independientemente de sus diferencias técnicas. Para ver un ejemplo de una API inconsistente, veamos las dos formas de agregar un elemento a una Lista en Java:

lista de Java IDG

Las API inconsistentes dificultan la vida de los desarrolladores. Un ejemplo: Java proporciona dos métodos para agregar un elemento a una Lista. Uno devuelve un booleano y el otro devuelve un vacío.

Aunque los dos métodos para agregar elementos a una lista hacen lo mismo, sus tipos de retorno (boolean y void) son diferentes. Los desarrolladores que usan esta API ahora deben realizar un seguimiento de qué método devuelve qué tipo, lo que hace que la API sea más difícil de aprender y su uso sea más propenso a errores. También significa que el código que usa estos métodos se vuelve menos flexible, ya que tiene que cambiar si desea cambiar la forma en que agrega elementos.

Tener en cuenta el contexto es otra forma de coherencia, aunque tiene que ver con factores externos a la API. Un gran ejemplo de esto, que no es de software, es cómo la regla de la carretera, el tráfico por la derecha o por la izquierda, influye en los diseños de automóviles para diferentes países. Los diseñadores de automóviles tienen en cuenta ese factor ambiental al ubicar el asiento del conductor en el lado derecho o izquierdo del automóvil.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *