Competencia Ticjob: Rest vs Restful

Aunque muchas veces se usan los términos Rest y Restful como sinónimos, no lo son. Rest (Representational State Transfer), es un modelo de arquitectura web basado en el protocolo HTTP para mejorar las comunicaciones cliente-servidor, mientras que Restful Web Service o Restful API son programas basados en REST. Su principal diferencia es que la API no necesita ejecutar una red, sino que es posible hacerlo desde un mismo ordenador.

Rest sigue una serie de principios:

  1. Todo lo que se mueve a través de las comunicaciones web son recursos, es decir, los datos se representan con el formato específico que tienen y no como un archivo físico.
  2. Cada uno de estos recursos ha de tener un identificador único, el cual se representa a través de su URL, puesto que hay una infinidad de recursos en la web y han de ser accesibles e identificables.
  3. Este protocolo de transmisión de datos debe utilizar los verbos estándares de HTTP, definidos en el protocolo nativo, donde cada uno de estos verbos significa una acción diferente. Hay 8 acciones principales ya definidas: GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE, CONNECT.
  4. Cada recurso puede tener múltiples representaciones, independientemente de cómo esté almacenado. Un ejemplo sería un recurso en formato XML y poder solicitarlo en JSON.
  5. Comunicaciones cliente-servidor, se trata de comunicaciones que se denominan sin estado (STATELESS), lo que significa que cada petición al servidor es tratada de manera totalmente independiente.

Por lo tanto, Rest es un concepto de arquitectura (en cambio Restful, son los Webs Services) que siguen los siguientes principios:

Ventajas de REST

Separación de un recurso de su representación:

Rest puede tener múltiples representaciones. No tiene estado, por lo tanto, hay que especificar en el encabezado de la petición HTTP el tipo de contenido que se desea obtener. Tras este paso, será la aplicación del servidor la encargada de manejar la representación y devolver el estado HTTP apropiado, al cual finalmente deberíamos enviarle al servidor qué es lo que esperamos recibir.

Visibilidad

Rest está diseñado para ser visible y simple, lo que significa que cada aspecto del servicio debe ser autodescriptivo siguiendo las normas HTTP.

Seguridad

Al utilizar Rest garantizamos que los métodos HTTP son seguros, lo que significa que, al solicitar un recurso, este requerimiento no modifica o causa ningún tipo de cambio en su estado.

Escalabilidad

Si el aumento de la demanda exige aumentar el número de servidores, esto puede hacerse sin preocuparse por la sincronización entre los mismos, puesto que no hay que estar pendiente del estado de los recursos.

Rendimiento

La escalabilidad no debe ser confundida con el rendimiento. El rendimiento se mide por el tiempo necesario para que una única petición sea procesada, mientras que la escalabilidad depende del número total de peticiones que la aplicación puede manejar.

Al ser pequeños servicios, el tiempo de respuesta es 0 o con tendencia a 0. Por lo tanto, con esta arquitectura estamos aprovechando el procesamiento de las máquinas cliente para usar su poder de procesamiento.