Conceptos básicos — API

Mauricio Garcia
7 min readMay 1, 2020

--

Temario

  • ¿Qué es una API?
  • ¿Qué es una API en JavaScript?
  • APIs del navegador
  • APIs de terceros
  • API REST

i. ¿Qué es una API?

Las API (Application Programming Interface) es una interfaz informática que define las interacciones entre múltiples intermediarios de software[ref]

Imagina que está a punto de acabarse la pila de tu celular, ¿Qué es lo que haces?

  1. Vas a un enchufe y lo conectas.
  2. Vas y compras cable, [inserte aquí pasos que hace un electricista] y lo conectas directamente a la fuente de alimentación.

Creo que el 99.99% de las personas van a seleccionar la opción 1, a menos que seas una persona que de sabe electricidad (y aún así creo que es muy riesgoso). Entonces, el enchufe es exactamente una API, ya que es un intermediario que nos ayuda a resolver un problema (cargar el celular) de manera sencilla (con un cable, sin necesidad de tener conocimiento de electricidad).

ii. ¿Qué es una API en JavaScript?

Las API son funciones de programación que sirven para manipular diferentes aspectos del navegador y el sistema operativo que ejecuta el sitio, o manipular datos de otros sitios web o servicios.

En el párrafo anterior estamos dando dos definiciones:

  • Funciones de programación, que sirven para manipular funcionalidad compleja de manera sencilla (APIs del navegador).
  • Obtener datos de otros sitios web. (APIs web de terceros).

iii. Las API del navegador

Son APIs que nos proporciona el navegador, si bien no son parte del motor de JavaScript, pero si del entorno de tiempo de ejecución, esto quiere decir que el navegador nos expone las APIs y JavaScript nos facilita su acceso, esto con el fin de poder hacer interacciones dentro de nuestra aplicación… (ej. escuchar algún evento , seleccionar un nodo DOM del HTML, hacer peticiones a servicios XMLHttpRequest, etc…), aunque en segundo plano el navegador está usando un código de nivel inferior (ej. C++). Si te interesa saber como funciona el JRE(JavaScript Runtime Environment) [ref].

Cuando escribimos código para la web utilizando JavaScript, podemos usar gran número APIs disponibles [ref]

Como podemos observar en la imagen de arriba hay bastantes API’s disponibles en los navegadores que nos van a permitir hacer gran variedad de cosas .

Las API’s más comunes son:

  • Manipular documentos [ref]— Nos van a permitir manipular (crear, eliminar, cambiar) la parte visual de una página, la API más popular es DOM[ref], ya que nos permite manipular HTML y CSS.
  • Obtener datos del servidor[ref] — Es cuando actualizamos, manipulamos pequeñas partes de la aplicación, sin necesidad de actualizar toda la página, las API’s más comunes son XMLHttpRequest[ref] y Fetch[ref]
  • Dibujar y manipular gráficos — Son aquellas que mediante programación nos permiten crear escenas 2D y 3D, las API más popular es Canvas[ref].
  • Audio y video[ref] — Son aquellas que nos van a permitir manipular multimedia (controles de UI, mostrar subtítulos, agregar efectos, etc), la API principal es HTMLMediaElement[ref].
  • En dispositivos — Son aquellas que nos van a servir para manipular y recuperar datos del hardware del dispositivo (notificaciones, detalles del dispositivo, etc), una de las más populares y odiada al mismo tiempo (por su mal manejo) es la Notifications[ref]
  • Almacenamiento del lado del cliente [ref][ref]— Nos va ser útil cuando queremos almacenar datos en los navegadores del cliente, va desde ahorrar datos en las descargas, cuando no tiene internet, etc. Las más comunes son WebStorage[ref] e IndexedDB [ref].

iv. Las API web de terceros

Una API Web de terceros son aquellas que NO están integradas en el navegador de forma predeterminada. Nos van a permitir obtener datos a través de internet por medio de solicitudes HTTP, donde la mayoría de las veces son devueltas en texto con formato JSON, con la finalidad de que cualquier desarrollador pueda usarla.

La gran ventaja que tienen, es que cualquier dispositivo que tenga acceso a Internet puede usarlas, independientemente del sistema operativo o el lenguaje de programación.

Podemos encontrar 3 tipos de APIs:

:: Públicas

Son aquellas que en su mayoría son gratuitas, o es necesario registrarse para obtener algún token API_KEY, o las famosas freemium. (cuando solo usas un número limitado de peticiones).

La mayoría de los casos son para ofrecer un mejor servicio a los usuarios, podemos encontrar las que nos dan el clima(Weather), obtener catálogo de series y películas(themoviedb), acceder a los mapas (Google), activar dispositivos(Alexa, Siri), cuando inicias sesión en un sitio web con tu perfil personal (Facebook, Google, Microsoft, GitHub) y un largo, larguísimo etcétera…

:: Privadas (internas)

Son aquellas APIs que realiza una empresa para usarlas de manera interna.

Para este caso podemos encontrar a Netflix, donde usa APIs privadas que se van a encargar de transmitir video a toda su red de dispositivos.

:: Entre socios

Son aquellas que se usan entre empresas o socios, con la finalidad de integrar funcionalidad personalizada en sus propios flujos.

El ejemplo más evidente es que dentro de la aplicación de Uber puedes escuchar tú música de Spotify.

v. API REST

Fue definido por Roy Fielding en su tesis en el año 2000[ref]. Aunque no fué creado de la noche a la mañana, ya que Roy estuvo involucrado en el desarrollo inicial y estandarización de la web, en 1994 comenzó a trabajar en el W3[ref] y fue coautor de la especificación HTTP 1.0, y autor principal de las especificaciones HTTP 1.1[ref] y URI[ref], y además también fue cofundador del servidor web Apache[ref].

Una API REST (Representational State Transfer) NO es una arquitectura de software, es derivado de los estilo de arquitectura estandarizado para crear una API de servicio web con ciertos requisitos o restricciones.

— Requisitos o restricciones REST

Una arquitectura de comunicación que quiera llamarse RESTful debe cumplir con estas restricciones[ref][ref]:

:: Cliente-servidor

Es separar la interfaz de usuario (front) del almacenamiento de datos (back), mejorando la portabilidad de UI en múltiples plataformas y mejora la escalabilidad de los componentes del servidor; esto quiere decir que va a permitir que ambos evolucionen de forma independiente.

:: Sin estado

Cada solicitud debe contener toda la información necesaria para que el servidor comprenda la solicitud, esto quiere decir que el servidor no debe mantener sesiones o del lado del cliente no debe haber información guardada (cookies), de hecho las cookies violan los ideales de REST.

:: Caché

Las respuestas deben ser, implícita o explícitamente, definirse como almacenables o no almacenables en caché para evitar que los clientes proporcionen datos obsoletos en respuesta a solicitudes adicionales. El almacenamiento en caché bien administrado elimina parcial o completamente algunas interacciones cliente-servidor, mejorando aún más la escalabilidad y el rendimiento.

:: Interfaz uniforme

La característica central que distingue el estilo arquitectónico REST es su énfasis en una interfaz uniforme entre componentes. Las implementaciones están desacopladas de los servicios que brindan, lo que fomenta la capacidad de evolución independiente.

:: Sistema en capas

El servidor puede disponer de varias capas para su implementación, esto significa que un servidor puede llamar a varios servidores para generar una respuesta al cliente. Es decir el cliente no sabe si está utilizando un servicio final o es un intermediario.

— Solicitudes REST

Una solicitud REST del cliente al servidor consta de los siguientes componentes:

  • Ruta URL — Dirección de internet que vamos a utilizar de servicio.
  • Método HTTP — [GET, PUT, POST, PATCH, DELETE]
  • Encabezado (opcional)Información adicional que el cliente necesita transmitir en la solicitud.
  • Parámetros (opcional) — Campos variables que alteran la devolución de los datos.
  • Cuerpo (opcional) — Contiene datos que deben enviarse al servidor.

--

--