hipertexto hipermedios hipermedialidad hipermedia hipergrama ejemplos concepto caracteristicas rest controls hateoas hypermedia

rest - hipermedios - ¿Qué es la hipermedia, los controles de hipermedia, los formatos de hipermedia?



hipermedios concepto (2)

Hay mucha confusión sobre esto, porque la mayoría de las aplicaciones que se llaman a sí mismas REST no usan hipermedia y no son REST en absoluto.

Hipermedia es una generalización de hipertexto para contenido que no sea HTML. Se puede decir que el hipertexto es un subconjunto de hipermedia. Hypermedia puede ser HTML en un navegador, con todos los enlaces, botones y todo lo que se representa para que pueda navegar por un sitio web, o puede ser un documento XML o JSON destinado a ser analizado por un cliente automatizado que también seguirá los enlaces y acciones como un Sería humano hacer con un navegador, haciendo clic en los enlaces y botones renderizados.

HATEOAS significa que la interacción de un cliente con una aplicación REST debe ser impulsada por hipermedia o, para decirlo simplemente, el cliente debe obtener todos los URI para cada recurso que necesita siguiendo los enlaces en la representación de los recursos, no confiando en los recursos información de banda, como los patrones de URI dados en la documentación, como hacen muchas API.

Esto es más simple de lo que parece. Solo significa que la interacción entre un cliente y una aplicación REST debe ser exactamente como la de un humano que navega por un sitio web. Tome Stack Overflow en sí, por ejemplo. Hay Usuarios, Preguntas y Respuestas. Cuando quiera ver una lista de sus preguntas, no vaya a un sitio web de documentación, obtenga una plantilla de URI para enumerar sus preguntas, llene un marcador de posición con su identificación de usuario y péguela en su brownser. Simplemente haga clic en un enlace a otro documento descrito como la lista de preguntas, y ni siquiera le importa qué es el URI exacto. Eso es lo que HATEOAS significa en la práctica.

Una forma de hipermedia define el contrato entre cliente y servidor. Es el formato de datos habilitado para hipervínculo que está utilizando para una representación particular de un recurso en una aplicación de hipermedia. Por ejemplo, si tiene un recurso de usuario, debe documentar qué deben esperar exactamente los clientes de una representación de ese recurso y cómo analizar la representación para extraer la información. Antes de interactuar con su API, sus clientes necesitan implementar un analizador para extraer la información, necesitan saber qué propiedades tiene el recurso y qué significan, qué relaciones de enlace deben esperar y qué transiciones de estado están disponibles, etc.

Los controles de hipermedia son las combinaciones de métodos de protocolo y relaciones de enlace en un formato de hipermedia que le dice al cliente qué transiciones de estado están disponibles y cómo realizarlas. Por ejemplo, una pregunta puede tener un enlace rel=post_answer que espera una representación de respuesta como la carga útil de un método POST y creará un nuevo recurso de respuesta relacionado con ella.

Una vez que haya definido un conjunto de formatos de hipermedia, necesita un tipo de medio específico del dominio para determinar exactamente qué formato de hipermedia se está utilizando para una interacción en particular. Una application/xml genérica de tipo de medio solo le dice al cliente cómo analizar el formato de datos, no dice nada sobre la información extraída por el analizador. Por ejemplo, digamos que un documento tiene la application/vnd.mycompany.user.v1+xml tipo de medios application/vnd.mycompany.user.v1+xml , el cliente sabe que es una representación de la versión 1.0 del recurso Usuario en formato XML. Si cambia el recurso agregando o eliminando propiedades, enlaces, etc., puede cambiar el número de versión y los clientes no se interrumpirán, ya que pueden solicitar la versión para la que se implementaron utilizando el encabezado Accept . También puede proporcionar múltiples formatos para el mismo recurso, como XML o JSON, e incluso una representación bastante legible en HTML.

Cuando envuelves todo, el protocolo subyacente, HTTP; Los contratos definidos por los formatos de hipermedia y los tipos de medios: tiene su Protocolo de aplicación de dominio , que es el conjunto completo de recursos y las transiciones de estado disponibles anunciadas por su aplicación.

No hace falta decir que el 99% de las llamadas API REST que encontrará en Internet no siguen todo esto. La mayoría de ellos son simplemente API HTTP que siguen algunas de las restricciones de REST, a veces porque realmente no las necesitan todas, a veces porque eso es lo que los desarrolladores pensaron que realmente es REST.

Actualmente estoy leyendo el libro "Descansa en la práctica". No puedo entender la siguiente terminología Hipermedia, formato de hipermedia, controles de hipermedia, protocolo de aplicación de dominio. El autor sugirió la necesidad de un formato de hipermedia específico de dominio. Apenas pude entenderlos. Busqué en Google estos términos pero no pude encontrar una respuesta correcta. ¿Alguien puede explicar estas terminologías y por qué necesitamos formatos de hipermedia específicos de dominio en lugar de application / xml?


Hipermedia = el hecho de que el cliente y el servidor hablan en términos de una representación uniforme, por ejemplo: hipervínculos.

Control de HyperMedia = Un recurso debe tener una operación realizada. Así, por ejemplo, un producto está representado por el hipervínculo dominio / producto / 001 y luego el recurso puede ser operado (editado y eliminado) por hipermedia control dominio / producto / 001 / editar y dominio / producto / 001 / eliminar.

La mayor diferencia está en el enfoque. Los sistemas de procedimiento primero escriben las operaciones como transiciones de estado en código secuencial (java, etc.), luego las interacciones se fabrican como hipervínculos para entregar HATEOAS.

Pero los sistemas abordados como interacciones modelan directamente las interacciones y, por lo tanto, ofrecen hipervínculos directamente. Un ejemplo de ejemplo es http://www.masterkube.com/hateoas_technology.html está aquí.

Espero que esto ayude.