Servicios Web: RESTful

Actualmente los servicios Web RESTful son ampliamente utilizados. Parte del éxito radica en su simplicidad. Algunas compañías importantes brindan este tipo de servicios, algunos ejemplos son: Facebook, Twitter, Amazon, eBay, Google, entre otras. Pero antes hablar de RESTful es necesario abordar dos conceptos clave: servicios Web y REST.

¿Qué es un servicio web?

Como primera aproximación se puede decir que es cualquier tipo de servicio provisto por la Web incluyendo las páginas Web.

Lo anterior no es del todo cierto, por ello la definición que se puede considerar es la provista por la W3C:

«Un servicio Web es un sistema de software diseñado para admitir la interacción interoperable de máquina a máquina a través de una red. Tiene una interfaz descrita en un formato de proceso de máquina (específicamente WSDL). Otros sistemas interactúan con el servicio web en una forma prescrita por su descripción utilizando mensajes SOAP, normalmente transmitidos utilizando HTTP con una serialización XML junto con otros estándares relacionados con la Web.»

 

Sin embargo, sigue sin ser general. Es específica ya que solo habla de servicios web basados en SOAP y WSDL.

Por ello, en el año 2004 el grupo de trabajo del W3C en una nota afirmó lo siguiente:

«Podemos identificar dos clases principales de servicios Web:

  • Servicios Web que cumplen con REST, en los cuales el propósito principal del servicio es manipular representaciones XML de recursos web utilizando un conjunto uniforme de operaciones «sin estado»
  • Servicios Web arbitrarios, en los que el servicio puede exponer un conjunto arbitrario de operaciones»

Entonces, se podría considerar como definición:

Un servicio Web es un sistema de software diseñado para admitir la interacción interoperable de máquina a máquina a través de una red

¿Qué es REST?

El objetivo principal de cualquier sistema distribuido es facilitar el acceso a recursos remotosREST se diseñó pensando en ser simple, con ello se lograría una rápida adopción del usuario y un desarrollo rápido.

REST es un estilo arquitectónico diseñado para y sobre un sistema distribuido particular, la Web

Servicios Web RESTful

Los dos conceptos clave son necesarios ya que un servicio Web RESTful es aquél servicio web que está basado en la arquitectura REST. Los servicios Web RESTful se basan en recursos. Un recurso es una entidad, la cual se almacena principalmente en un servidor y el cliente solicita el recurso utilizando servicios Web RESTful.

Características principales de un servicio Web RESTful

  • Tiene cinco operaciones típicas: listar, crear, leer, actualizar y borrar
  • Cada operación requiere de dos cosas: El método URI y HTTP
  • El URI es un sustantivo que contiene el nombre del recurso
  • El método HTTP es un verbo

Operaciones RESTful

Operación Método HTTP URI Parámetros Resultado
Listar GET /{recurso} No aplica Lista del tipo de recurso
Crear POST /{recurso} Dentro del cuerpo en el POST Se crea un nuevo recurso
Leer GET /{recurso}/{recurso_id} No aplica Recurso en función al id
Actualizar PATCH/PUT /{recurso}/{recurso_id} Se pasan usando una cadena de consulta Se actualiza/reemplaza el recurso
Borrar DELETE /{recurso}/{recurso_id} No aplica Se elimina el recurso en función al id

Operaciones RESTful según el método HTTP

GET

POST

PUT

PATCH

DELETE

El uso de Servicios Web RESTful mejora la portabilidad entre cualquier tipo de plataforma. Esto permite a los desarrolladores poder escalar las aplicaciones sin gran complicación.
La principal ventaja es la separación entre el Cliente y el Servidor, ya que no importa el lenguaje del que proviene o el tipo de Servidor (Python, Java, Node.js); lo único que se necesita es generar correctamente cada solicitud. En futuras entradas se abordarán otros Servicios Web.

Referencias

≡   Web Services Architecture   ≡   HTTP/1.1: Status Code Definitions   ≡   Building RESTful Web Services with PHP 7  ≡