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:
|
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 remotos. REST 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 ≡