REST vs. SOAP ¿cuál es la diferencia?

9min

En el mundo de Internet han tenido mucho auge los servicios web, ya desde hace años, haciendo posible toda una nueva generación de aplicaciones capaces de llevar a la web a otro nivel. Otro término para conocer a los servicios web es simplemente API, aunque éste se puede usar de manera genérica para muchas otras cosas. Dentro de las tecnologías que podemos usar para poder construir la parte del backend de las aplicaciones modernas (los servicios web), tenemos dos alternativas principales: REST y SOAP. En este artículo te explicaremos sus diferencias y cuándo usar una u otra.

Índice

¿Qué es REST?

REST es una arquitectura o un estilo de desarrollo de servicios web o APIs. No se trata de un estándar ni de un stack de tecnologías ni nada parecido, son simplemente unas guías para implementar las API.

Las siglas de REST corresponden con Representational State Transfer, y fueron introducidas en el año 2000 por Roy Fielding. No se trata de un estándar, ya que ninguna organización ha realizado una normalización para decir exactamente qué es REST y qué no es REST. Sin embargo, ese estilo de arquitectura se ha convertido en algo parecido, ya que se usa de manera generalizada en el desarrollo de aplicaciones del más diverso alcance.

En REST se utilizan los verbos del HTTP y los códigos de estado para definir las URL que sustentarán las operaciones típicas que encontramos en la mayoría de las aplicaciones: listados, altas, bajas y modificaciones, lo que se conoce por CRUD. Además, como lenguaje de transporte de los datos, se usa el archivo JSON en la inmensa mayoría de los casos.

¿Qué es SOAP?

Por su parte, SOAP es un protocolo para el intercambio de mensajes estructurados en entornos de red, para la implementación de sistemas distribuidos. El objetivo de SOAP es, por tanto, muy similar al de REST, pero la manera de llevarse a cabo es diferente.

Las siglas de SOAP son Simple Object Access Protocol y consiste en un conjunto de tecnologías y procedimientos bien definidos, capaces de facilitar un desarrollo robusto y a prueba de errores.

SOAP puede usar diversos tipos de protocolos de transporte, y usa XML como lenguaje para el transporte de los datos entre los sistemas.

¿Cómo funciona la API de SOAP?

Las API SOAP tienen la particularidad de usar XML para el transporte de los datos. Además, el protocolo define una serie de campos para establecer las comunicaciones, como un «envelope» para el cuerpo de los mensajes o el «header» para los datos de cabecera, entre otros. Si quieres saber más sobre este protocolo, te recomendamos leer el post sobre SOAP publicado recientemente.

¿Cómo funciona la API de REST?

Una API de REST funciona mediante la transmisión de los datos por HTTP usando URL en un servidor, que son capaces de recibir solicitudes y devolver datos en crudo estructurados en el lenguaje JSON.

Cada uno de los recursos de un API tendrá generalmente una serie de operaciones CRUD que se invocan mediante solicitudes HTTP de tipos GET, POST, PUT y DELETE.

¿Cuáles son las diferencias entre REST y SOAP?

Para entender las diferencias, vamos a destacar algunos datos interesantes sobre estas dos alternativas.

Arquitectura y diseño

Mientras que REST es más un estilo arquitectónico, SOAP es un protocolo bien definido. Por ello, las implementaciones REST son mucho más flexibles, mientras que SOAP es mucho más formal.

Protocolos utilizados y estándares

REST puede usar solamente el protocolo HTTP para las transferencias de datos. Por su parte, SOAP puede usar HTTP pero también otros protocolos de red.

Los estándares de seguridad de SOAP son mayores gracias a basarse en el lenguaje XML e implementar capas como WS-Security.

Formatos de datos y representación

En este punto encontramos una diferencia también muy relevante, ya que SOAP utiliza siempre XML para el intercambio de datos, mientras que REST usa generalmente JSON.

Podríamos decir que en principio REST podría usar otros lenguajes, pero las implementaciones usan casi siempre JSON.

Usabilidad

REST es generalmente mucho más fácil de usar y más sencillo de aprender. Por su parte, SOAP es más complejo de implementar, aunque también tiene otras ventajas como su nivel de seguridad y confiabilidad en las transmisiones.

Rendimiento en implementaciones y escalabilidad

REST es mucho más ligero y sencillo de escalar. No solo porque usa un lenguaje más liviano como JSON, sino que además consume pocos recursos de las máquinas y las transmisiones.

SOAP puede resultar bastante más pesado en sus implementaciones y en las transferencias de datos, entre otras cosas por usar XML, pero también por las comprobaciones que se pueden realizar para mejorar la seguridad y la robustez.

¿En qué se parecen REST y SOAP?

A pesar de las diferencias que acabamos de ver, en el fondo tanto REST como SOAP tienen muchas similitudes, principalmente en el tipo de problemas que tratan de resolver y los estándares sobre los que funcionan.

Basados en protocolos web estándar

Ambos modelos de desarrollo de servicios web usan protocolos estándar de redes e Internet para funcionar, HTTP o HTTPS principalmente. Esto hace que ambos sean especialmente adecuados para la web.

Orientados a servicios web

Las dos alternativas sirven para el desarrollo de servicios web. SOAP comenzó antes, y por tanto fue usado en los primeros servicios web, aunque actualmente REST es mucho más popular.

Utilización de XML para la estructura de datos

Aunque REST usa habitualmente JSON el estilo de arquitectura que promueve, no impide usar otros lenguajes de definición de datos como podría ser XML.

Soporte para diversos formatos de datos

No existe una limitación en los formatos de datos que ambas alternativas pueden soportar. De hecho, XML se caracteriza por su extensibilidad, y JSON por su flexibilidad, por lo que ambos son perfectamente usables, independientemente del modelo de datos que se necesite transferir en cada tipo de aplicación.

Independencia de plataforma y lenguaje

Otra característica en común es que tanto REST como SOAP son independientes de cualquier plataforma o lenguaje de programación. Esto quiere decir que podemos usar cualquier stack de tecnologías para implementar servicios web que funcionen en uno u otro marco. 

Estándares de seguridad

Ambas tecnologías aportan seguridad a las comunicaciones a su manera. Las dos pueden funcionar por HTTPS, de modo que se garantice la confidencialidad de la información. Ambas soportan mecanismos de autenticación y autorización para garantizar el acceso a la información particular de los usuarios. 

Soporte para operaciones CRUD

REST y SOAP pueden soportar operaciones CRUD. Aunque REST se enfoca directamente en estas operaciones a través de los métodos HTTP, SOAP es igualmente capaz de implementar estas operaciones elementales a través del cuerpo del mensaje.

Utilización de HTTP como protocolo de comunicación

Como hemos dicho, ambas pueden usar HTTP como protocolo para las comunicaciones. Mientras que REST trabaja exclusivamente con HTTP, SOAP es más abierto a otros protocolos de transporte.

¿Cuándo usar SOAP en lugar de REST?

SOAP es un protocolo más robusto, y ofrece mecanismos más encaminados a garantizar la seguridad y la integridad de los datos. Sin embargo, es más complejo y puede ofrecer un rendimiento menor.

Por esos motivos, la elección entre SOAP frente a REST suele darse en escenarios donde se requiera el trabajo con datos críticos, como operaciones bancarias, gubernamentales o en ámbitos de la salud.

Necesidades de seguridad y transacciones complejas

Por su seguridad y por la integridad de los datos, SOAP es más recomendable. Algunas características como WS-Security proporcionan integridad en los mensajes intercambiados. Además, el protocolo permite establecer soluciones a problemas ocurridos durante las comunicaciones.

Requerimientos de transacciones ACID y operaciones atómicas

También se suele usar SOAP en aplicaciones donde las transacciones necesitan cumplir con las propiedades ACID.

Integración en entornos empresariales y legacy systems

Aunque «entornos empresariales» puede ser un término algo ambiguo, si se requiere mayor confiabilidad de los mensajes, SOAP suele ser a menudo una opción más adecuada.

Si se trata de dar servicio a sistemas legacy, también SOAP puede ser más deseable por ser más formal y robusto, así como más versátil en lo que respecta a los protocolos admitidos.

Necesidad de contratos y especificaciones rígidos

Todo lugar donde tengamos que respetar de una manera rígida contratos y especificaciones hace en principio más recomendable la elección de SOAP por sus muchas medidas de seguridad y por garantizar mejor la integridad de las comunicaciones de datos. 

Implementación en middleware y sistemas complejos

Si en estos arcos se requiere una lógica de negocio detallada y operaciones que van más allá de las típicas CRUD, SOAP puede ser mucho más adecuado. Gracias a este protocolo tendremos capacidad para manejar solicitudes complejas y sistemas que hacen de middleware.

Requerimientos de garantía de entrega y ACID

Finalmente, en aplicaciones donde es crucial una garantía de entrega y las transacciones deben ser ACID, SOAP sería más indicado por su enfoque en la seguridad, su fiabilidad y la integridad de las combinaciones.

Con todo lo anterior, debe quedarnos claro que, aunque REST actualmente es mucho más popular, SOAP sigue siendo adecuado en muchos casos más complejos y en ámbitos donde se requiera mayor seguridad y confiabilidad. 

Fernán García de Zúñiga

Productos relacionados: