REST debe usarse si es muy importante para usted minimizar el acoplamiento entre los componentes del cliente y el servidor en una aplicación distribuida.
Este puede ser el caso si su servidor va a ser utilizado por muchos clientes diferentes sobre los que no tiene control. También puede ser el caso si desea poder actualizar el servidor regularmente sin necesidad de actualizar el software del cliente.
Les puedo asegurar que lograr este bajo nivel de acoplamiento no es fácil de hacer . Es fundamental seguir todas las limitaciones de REST para tener éxito. Mantener una conexión puramente sin estado es difícil. Elegir los tipos de medios correctos y exprimir sus datos en los formatos es complicado. Crear tus propios tipos de medios puede ser aún más difícil.
Adaptar el comportamiento del servidor enriquecido en la interfaz HTTP uniforme puede ser confuso y, a veces, parece pedante en comparación con el enfoque RPC relativamente sencillo.
A pesar de las dificultades, los beneficios son que tiene un servicio que el desarrollador de un cliente debería poder entender fácilmente debido al uso constante del protocolo HTTP. El servicio debe ser fácilmente detectable debido a hipermedia y el cliente debe ser extremadamente resistente a los cambios en el servidor .
Los beneficios del hipermedia y la evitación del estado de la sesión hacen que el equilibrio de carga sea simple y la partición del servicio sea factible . La estricta conformidad con las reglas HTTP hace que la disponibilidad de herramientas como depuradores y servidores proxy de almacenamiento en caché sea algo maravilloso.
Actualizar
Me parece que REST es otra 'última palabra de moda' (o puedo estar totalmente equivocado porque nunca he visto REST en la práctica).
Creo que REST se ha puesto de moda porque las personas que intentan hacer proyectos de tipo SOA han descubierto que al usar la pila SOAP no se están dando cuenta de los beneficios prometidos. La gente sigue volviendo a la web como un ejemplo de metodologías de integración simples. Desafortunadamente, creo que las personas subestiman la cantidad de planificación y previsión que se necesitó para crear la web y simplifican demasiado lo que se debe hacer para permitir el tipo de reutilización fortuita que ocurre en la web.
Dices que nunca has visto REST en la práctica, pero eso no puede ser cierto si alguna vez usas un navegador web. El navegador web es un cliente REST.
- ¿Por qué no necesita hacer una actualización del navegador cuando alguien cambia algo de HTML en un sitio web?
- ¿Por qué puedo agregar un nuevo conjunto completo de páginas a un sitio web y el "cliente" aún puede acceder a esas nuevas páginas sin una actualización?
- ¿Por qué no necesito proporcionar un "lenguaje de descripción de servicio" al navegador web para decirle cuándo va a http://example.org/images/cat que el tipo de retorno será una imagen jpeg y cuando vaya a
http://example.org/description/cat
el tipo de retorno será text / html?
- ¿Por qué puedo usar un navegador web para visitar sitios que no existían cuando se lanzó el navegador? ¿Cómo puede el cliente saber acerca de estos sitios?
Esto puede sonar como preguntas tontas, pero si conoce la respuesta, puede comenzar a ver de qué se trata REST. Mire StackOverflow para obtener más beneficios de REST. Cuando estoy mirando una pregunta, puedo marcar esa página o enviar la URL a un amigo y él puede ver la misma información. No tiene que navegar por el sitio para encontrar esa pregunta.
StackOverflow utiliza una variedad de servicios OpenId para autenticación, gravatar.com para imágenes de avatar, google-analytics y Quantserve para información analítica. Este tipo de integración multiempresarial es el tipo de cosas con las que el mundo SOAP solo sueña . Uno de los mejores ejemplos es el hecho de que las bibliotecas jQuery que se utilizan para controlar la interfaz de usuario de StackOverflow se recuperan de la red de entrega de contenido de Google. El hecho de que SO pueda dirigir al cliente (es decir, su navegador web) a descargar código de un sitio de terceros para mejorar el rendimiento es un testimonio del bajo acoplamiento entre el cliente web y el servidor.
Estos son ejemplos de una arquitectura REST en el trabajo.
Ahora, algunos sitios web / aplicaciones rompen las reglas de REST y luego el navegador no funciona como se esperaba.
- El infame problema del botón de retroceso
se debe al uso del estado de sesión del lado del servidor.
- El equilibrio de carga puede convertirse en un problema cuando tiene un estado de sesión del lado del servidor.
- Las aplicaciones Flash a menudo evitan que la URL identifique específicamente una representación.
- El otro problema que rompe los navegadores web es la pobre conformidad con los estándares de tipo multimedia. Escuchamos todo el tiempo acerca de cómo IE6 necesita ser asesinado. El problema es que los estándares no se siguieron correctamente o se ignoraron por cualquier motivo.
- El uso de sesiones de inicio de sesión es la fuente de muchos agujeros de seguridad.
El descanso está en todas partes. Es la parte de la web que hace que funcione bien. Si desea crear aplicaciones distribuidas que se puedan escalar como la web, sea resistente a los cambios como la web y promueva la reutilización como lo ha hecho la web, luego siga las mismas reglas que al crear navegadores web.