Fundamentos JavaScript: Introducción a las API REST

La transferencia de estado representacional (o REST por sus siglas en inglés) es un estilo de arquitectura de software que maneja la relación cliente-servidor con el propósito de aumentar la velocidad y el rendimiento usando componentes reutilizables.

REST es una tecnología que apareció en el año 2000 gracias a una tesis doctoral del Roy Fielding. Actualmente, suele usarse más que SOAP (Simple Object Access Protocol) ya que usa menos ancho de banda y su uso es más sencillo y flexible. Podemos utilizarlo para recuperar o enviar información a través de un servicio web, lo cual se hace mediante peticiones HTTP a la API REST.

Affiliated Ad

¿Qué es una API REST?

Una API REST es un modo sencillo de acceder a servicios web sin excesivo procesado. Cuando se llama a una API RESTful, el servidor transferirá al cliente una representación del estado de recurso solicitado.

En realidad, esto lo hacemos casi cada día. Si está buscando vídeos en YouTube, teclearás una palabra clave en su buscador, pulsarás Enter y obtendrás un listado de vídeos. Conceptualmente, así es como funciona una API REST. Estás buscando algo y obtienes una lista de resultados del servicio al que has lanzado la petición.

Una API es un interfaz de programación de aplicaciones. Es un conjunto de reglas que permite a los programas comunicarse entre ellos. El desarrollador crea la API en el servidor y permite al cliente ‘hablar’ con ella.

REST es lo que determina el ‘aspecto’ de la API. Son las reglas que siguen los desarrolladores cuando crean una API. Una de estas reglas determina que deberías ser capaz de obtener un ‘trozo’ de datos (un recurso), cuando invocas una URL determinada.

Cada llamada a una URL se denomina una petición, mientras que los datos obtenidos se denomina repuesta.

Arquitectura RESTful

¿Cuales son las características básicas de REST?

  • Sin estado (stateless): Significa que los datos del cliente no se almacenan en el servidor, la sesión se guarda del lado del cliente (normalmente, almacenamiento de sesión).
  • Cliente <-> Servidor: Existe una separación de responsabilidades entre el front-end (cliente) y el back-end (servidor). Operan de forma independiente y ambos son reemplazables.
  • Caché: Los datos del servidor pueden ser cacheados en el cliente, mejorando su rendimiento.
  • Composición de la URL: Se usa un enfoque estandarizado para componer la URL base. Por ejemplo, una petición get a /ciudades debería devolver todas las ciudades de la base de datos, mientras que una petición get a /ciudades/detroit devolvería la ciudad con identificador ‘detroit’. De forma similar, REST utiliza métodos estándar como get, put, delete y post para realizar acciones, lo veremos en la siguiente sección.

Así pues, podemos definir una API RESTful como aquella que no tiene estado, separa responsabilidades entre cliente y servidor, permite el cacheo de datos en el cliente y usa URLs base estandarizadas y métodos para realizar las acciones necesarias para manipular, añadir o borrar datos.

REST en acción

Veamos de más cerca como se lleva esto a cabo. Nuestra petición se envía desde el cliente al servidor vía HTTP en forma de URL web. Usando bien GET, POST, PUT o DELETE. Después, se envía una respuesta desde el servidor en forma de recurso, que puede ser algo como HTML, XML, Imagen o JSON. Éste último es de lejos el formato más popular, así que lo usaremos en nuestro ejemplo.


Foto: https://antmedia.io

HTTP tiene cinco métodos que se usan normalmente en arquitecturas basadas en REST: POST, GET, PUT, PATCH y DELETE. En realidad se corresponden con crear, leer, actualizar y borrar, respectivamente. Conviene recordar que existen también otros métodos que se usan con menos frecuencia, como OPTIONS y HEAD.

  • GET: Este método se usa para recuperar (o leer) una representación de un recurso. Si todo va bien, GET devuelve una representación en XML o JSON y en código HTTP de respuesta 200 (OK). En caso de error, habitualmente devuelve un 404 (no encontrado) o 400 (petición incorrecta).
  • POST: Este método se usa a menudo para crear nuevos recursos. En particular, recursos subordinados, es decir subordinado a algún otro recurso (padre). Al crearse con éxito, devuelve un estado HTTP 201, devolviendo una cabecera con el enlace al recurso recién creado.
  • PUT: Se usa para actualizar y también crear un recurso (en el caso en el que el identificador del recurso lo elige el cliente en lugar del servidor). Esencialmente, PUT se lanza a una URL que contiene el valor de un recurso no existente. Una actualización con éxito devuelve un 200 (o 204 si no se devuelve ningún contenido). Si se usa PUT para crear, devuelve un HTTP 201 si se crea con éxito.
  • PATCH; Se usa para modificar capacidades. La petición PATCH sólo necesita los cambios del recurso, no el recurso completo. Es parecido a PUT, sin embargo el cuerpo contiene un conjunto de instrucciones que describen cómo un recurso que actualmente reside en el servidor debe ser modificado para generar una versión. Así pues, el cuerpo del PATCH no debería ser sólo la parte modificada del recurso, sino algún tipo de lenguaje como XML o JSON.
  • DELETE: Muy explicativo, se usa para borrar recursos identificados por una URL. Al borrar con éxito, devuelve un estado HTTP 200 (OK), junto con un cuerpo de respuesta.

Trabajando con datos REST

Además, se ha convertido en práctica habitual en los REST API devolver datos en un formato estándar. Como hemos mencionado, el formato más popular hoy en día es JSON (JavaScript Object Notation). La estandarización del formato de datos es otro paso hacia la uniformidad en el modo en que se interactúa con los recursos en la web, permitiendo que los desarrolladores solucionen problemas y pierdan el tiempo en configurar la arquitectura básica.

Cuando solicitamos datos de una API, puedes obtener algo así:

{
    title: "Hi, I am JSON",
    content: [
        chapter: "1",
        page: "100",
        firstParagraph: "I am JSON, this is what I look like when I am returned from an API."
    ],
    author: "Bruce Smithesson"
}

Este formato permite una fácil acceso a los datos dentro del JSON, usando notación en punto como ‘data.title’, que devuelve ‘Hi, I am a JSON’.

¿Dónde podemos encontrar APIs RESTful? ¡En todas partes!
Twitter. Google. Open Weather Map. YouTube. La mayoría de los servicios más populares que usamos a diario utilizan una arquitectura RESTful para su servicio API. Así que te animamos a que explores nuevas APIs para que añadas nuevas funcionalidades a tus webs o aplicaciones.

Conclusión

Eso es todo. Hemos visto que es un REST, así como los principios que rigen su arquitectura. Hemos visto como funcionan los REST con APIs que envían y reciben datos desde el cliente al servidor. También hemos visto el formato JSON, con el que trabajaremos más a menudo cuando accedamos o manipulemos datos.

Espero que este artículo te haya parecido útil. Puedes seguirme en Medium y Twitter. También puedes dejar tus preguntas en los comentarios, ¡estaré encantado de ayudarte!

Puedes ver al artículo original en inglés:
https://itnext.io/javascript-fundamentals-an-introduction-to-rest-apis-7cbe8a809d3b

Deja un comentario

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