CambioDigital-OL

0

¿Qué es una API?

APIAPI, interfaz de programación de aplicaciones por sus siglas en inglés, es uno de esos acrónimos que se usan en todas partes, desde herramientas de línea de comandos hasta código Java empresarial y aplicaciones web de Ruby on Rails. 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 totalmente desde cero, una aplicación de software bien diseñada tendrá APIs internas para ayudar a organizar el código y hacer que los componentes sean más reutilizables.

Profundizando un poco más, una API es una especificación de posibles interacciones con un componente de software. Por ejemplo, si un automóvil es un componente de software, su API incluiría información sobre la capacidad de acelerar, frenar y encender la radio. También incluiría información sobre cómo acelerar: ponga su pie en el acelerador y empuje. La información “qué” y “cómo” se combinan en la definición de la API, que es abstracta y está separada del automóvil en sí.

Una cosa a tener en cuenta es que el nombre de algunas API se usa a menudo 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 mediante programación con Twitter, sino que generalmente se entiende como lo que interactúa, como en “Estamos haciendo análisis sobre los tweets que obtuvimos de la API de Twitter”.

Examinemos la API de Java y la API de Twitter como ejemplos. Primero, obtendremos una imagen rápida de estas dos APIs y de cómo cumplen con la definición de “qué” y “cómo”. Luego, hablaremos sobre cuándo es probable que use las API y qué se incluye en un diseño bien diseñado.

La API de Java
La API de Java es una biblioteca de componentes de software disponible “de fábrica” para cualquier persona que haya instalado Java Development Kit. Estos componentes implementan tareas comunes y, en general, aumentan la productividad porque los programadores no tienen que comenzar de cero cada vez. Uno de los componentes básicos utilizados en el software es algo llamado Lista, que, como era de esperar, realiza un seguimiento de una lista de elementos. La API de Java define lo que puede hacer con una Lista: agregar elementos, ordenar la lista, determinar si un elemento está en la lista, etc. También especifica cómo realizar esas acciones. Para ordenar la lista, debe especificar cómo desea que se clasifique la lista: alfabéticamente, descendente numéricamente, más brillante a un color más apagado, etc.

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

La documentación de la API OpenJDK para el método de ordenació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 los 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 a través de 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, tal como lo hace un navegador web. Pero en lugar de que la respuesta se entregue como página web, para que los entiendan los humanos, 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.

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

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

La documentación de la API de búsqueda de Twitter.

La documentación de la API de búsqueda de Twitter.

API REST
La API de Twitter, junto con muchas otras APIs basadas en la web, es un ejemplo de una API REST, lo que quiere decir que es una API que utiliza el estilo arquitectónico de Representational State Transfer (REST). REST, presentado formalmente por Roy Fielding en su disertación doctoral en el 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 su esencia, REST es un estilo de construcción de sistemas que permite la 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 casi 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 recursos, 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 usando el identificador, la API entrega la representación actual 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. Enviar datos a través de la web para el procesamiento es bastante lento, en comparación con hacer el procesamiento donde residen los datos y luego enviar 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.

API como capa de abstracción
Cuando se trata de software, las APIs están literalmente en todas partes. Las APIs 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 se puedan manejar de una manera simple. Piense en esta abstracción como esos botones Amazon Dash, las placas de circuito de botón con batería que puede usar para pedir grapas de Amazon. Esto es lo que parecen:

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

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 de tablero de Amazon y utiliza una aplicación en su teléfono inteligente para asociarlo a su red Wi-Fi, su cuenta de Amazon y un producto, por ejemplo, su marca favorita de toallas de papel. Luego, cuando quiera pedir más toallas de papel, simplemente presione el botón. El botón del tablero se conecta a Internet y envía un mensaje para hacer un pedido en su cuenta. Unos días más tarde, las toallas de papel llegan a su puerta.

Al igual que una API, el Dash Button es una interfaz dichosamente simple que oculta todo tipo de complejidad detrás de escena. La ID del producto que ordenó debe recuperarse de alguna base de datos. Su dirección de entrega debe extraerse de su cuenta. Se debe determinar el centro de despacho más cercano que tenga sus toallas de papel, luego se le notificará que retire un artículo del inventario disponible y lo empaquete. Finalmente, el paquete debe enrutarse a través de una combinación de aviones, camiones y furgonetas junto con otros paquetes, de forma que se 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 lleva mucho tiempo y tiene mejores cosas que hacer. Afortunadamente, toda la prueba se ha abstraído de usted. Existe una larga cadena interconectada de sistemas informáticos y procesos humanos que hacen que esas toallas de papel aparezcan en la puerta de su casa, pero en todo lo que tiene que pensar es presionar un botón. Esto es lo que las APIs son 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 use decenas si no cientos de APIs directamente, y cada una de esas APIs dependen de otras APIs, etc.

Diseño de una API
El diseño de una 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, los diferentes niveles de pensamiento y cuidado se ponen en el diseño de la API, lo que da como resultado niveles variables de calidad API. Las API bien diseñadas tienen un comportamiento consistente, toman en cuenta su contexto y tienen en cuenta las necesidades de sus usuarios.

El comportamiento constante dentro de una API tiene un gran impacto en la velocidad a la que se puede aprender, y la probabilidad de que los programadores cometan errores al usarla. En general, las APIs 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:

Las APIs 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.

Las APIs 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 de agregar elementos a una lista hacen lo mismo, sus tipos de devolución (booleanos y vacíos) son diferentes. Los desarrolladores que usan esta API ahora tienen que hacer 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 utiliza estos métodos se vuelve menos flexible, porque tiene que cambiar si desea modificar la forma en que agrega los elementos.

Tener en cuenta el contexto es otra forma de coherencia, aunque tiene que ver con factores externos a la API. Un gran ejemplo, que no es software, de esto es cómo la regla del tráfico de la derecha de la carretera o el tráfico de la mano izquierda influye en los diseños de los 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.

En el diseño de la API, tomar en cuenta el contexto generalmente significa que se está apegando a las mejores prácticas comúnmente aceptadas, y tomando inspiración de otras API con las que sus usuarios probablemente estén familiarizados. Supongamos que está creando una biblioteca que proporcionó un nuevo tipo de Lista a una aplicación Java, tal vez una que fue diseñada para trabajar específicamente con listas muy grandes. La API de esa lista probablemente debería incluir un método de adición que se comporte de la misma manera en que funciona el método de agregar Lista de Java. De esta forma, los usuarios pueden adoptar fácilmente su biblioteca porque ya saben cómo usarla.

Conocer a los usuarios y tener en cuenta sus necesidades es de la mayor importancia en el diseño de API. Su API tendrá usuarios felices si comprende sus puntos débiles y los ayuda a evitar ese dolor. Por la misma razón, puede optar por romper con otras reglas de buen diseño de API. Si estaba escribiendo una API web, el estándar de facto actual es usar JSON como el formato de intercambio. Sin embargo, si su API brindará servicios a usuarios científicos que recuperarán enormes cantidades de datos, JSON será demasiado detallado y engorroso para brindarles un buen servicio. Como resultado, puede optar por usar un formato binario como GRIB, aunque es una opción extremadamente poco común en el sentido general.

Las APIs son un componente esencial del diseño de software y existen en todos los niveles de la pila de software. Proporcionan una forma de definir y administrar las abstracciones al decirnos qué podemos hacer con los componentes de software y cómo podemos hacerlo. Las APIs bien diseñadas admiten una adopción y uso eficientes, fluido y sin esfuerzo, mientras que las APIs mal diseñadas tienden a causar dolores de cabeza cada vez que se usan.

Jonathan Freeman, InfoWorld.com

Ordenado por: Apps Tags: 

TOT

 

 

Contenidos recomendados...

Comparta esta publicación

Artículos relacionados

Escriba su comentario

Ud. tiene que estar conectado para publicar comentarios.

Red de publicaciones IDG en Latinoamérica: Computerworld Ecuador - Computerworld Colombia - CIO Perú // Contáctenos
© 4240 Computerworld Venezuela - All rights reserved ---- WordPress - Tema adaptado por GiorgioB