AFAIK Fielding no afirmó que REST fuera bueno, solo estaba describiendo la arquitectura de facto de la web.
Eso lo vende un poco, creo. REST es, después de todo, una enumeración del estilo arquitectónico que Fielding estaba usando como arquitecto jefe de la especificación HTTP / 1.1 .
Pero, ¿hay alguna razón para pensar que REST es una arquitectura deseable para este dominio? ¿Hay alguna evidencia que diga que HATEOAS es un principio de diseño beneficioso para la comunicación de máquina a máquina?
"Depende". HATEOAS es parte de la restricción de interfaz uniforme de REST.
Al aplicar el principio de generalidad de ingeniería de software a la interfaz del componente, se simplifica la arquitectura general del sistema y se mejora la visibilidad de las interacciones. Las implementaciones están desconectadas de los servicios que brindan, lo que fomenta la capacidad de evolución independiente. Sin embargo, la desventaja es que una interfaz uniforme degrada la eficiencia, ya que la información se transfiere de forma estandarizada en lugar de una que sea específica para las necesidades de una aplicación. La interfaz REST está diseñada para ser eficiente para la transferencia de datos hipermedia de gran tamaño, optimizando para el caso común de la Web, pero dando como resultado una interfaz que no es óptima para otras formas de interacción arquitectónica.
Así que pensemos por un momento sobre lo que esto significa. Cuando tengo problemas con mi enrutador inalámbrico, puedo comunicarme con él utilizando el mismo navegador que utilizo para enviar respuestas a stackexchange. En particular, no importa qué navegador esté usando o si mi navegador tiene algunas actualizaciones detrás (o delante) de lo que espera el enrutador. No importa que la organización de ingeniería que escribió el navegador sea completamente independiente de la organización que creó la interfaz del enrutador.
Eso simplemente funciona .
No es, por supuesto, universal. Fielding, en 2008 , escribió:
Eso no significa que creo que todos deberían diseñar sus propios sistemas de acuerdo con el estilo arquitectónico REST. REST está destinado a aplicaciones basadas en la red de larga duración que abarcan varias organizaciones. Si no ve la necesidad de las restricciones, no las use.
Las restricciones que forman el estilo arquitectónico REST fueron elegidas por las propiedades que inducen; Si esas propiedades no son valiosas para su caso de uso, entonces debería considerar descartar las restricciones correspondientes.
Donde máquina a máquina se vuelve difícil, es que has perdido la capacidad del ser humano de igualar difusamente la semántica proporcionada por las representaciones. Los clientes pueden sobrevivir conociendo solo los tipos de medios, pero normalmente tenemos un ser humano mirando las señales semánticas para obtener significado.
schema.org es una parte de un esfuerzo por crear un vocabulario legible por máquina; los agentes de la máquina usan al cliente para encontrar las sugerencias semánticas y aplican su propia comprensión del significado para elegir las acciones correctas a tomar.
Pero es trabajo; debe invertir en el desarrollo de representaciones amigables para la máquina de sus recursos y garantizar que esas representaciones sigan siendo compatibles con versiones anteriores y posteriores, de modo que los clientes puedan desarrollarse de forma independiente.
Cuando una sola organización controla tanto al cliente como al servidor, los beneficios de esta independencia son mucho menores, en cuyo caso la restricción puede no ser una opción arquitectónica apropiada.