stringtranslate.com

ODIAOAS

El hipermedia como motor del estado de la aplicación ( HATEOAS ) es una restricción del estilo arquitectónico del software REST que lo distingue de otros estilos arquitectónicos de red .

Con HATEOAS, un cliente interactúa con una aplicación de red cuyos servidores de aplicaciones proporcionan información dinámicamente a través de hipermedia . Un cliente REST necesita poco o ningún conocimiento previo sobre cómo interactuar con una aplicación o servidor más allá de una comprensión genérica de hipermedia.

Por el contrario, los clientes y servidores en Common Object Request Broker Architecture (CORBA) interactúan a través de una interfaz fija compartida a través de documentación o un lenguaje de descripción de interfaz (IDL).

Las restricciones impuestas por HATEOAS desacoplan al cliente y al servidor. Esto permite que la funcionalidad del servidor evolucione de forma independiente.

El término fue acuñado en el año 2000 por Roy Fielding en su tesis doctoral. [1]

Ejemplo

Un agente de usuario realiza una solicitud HTTP a una API REST a través de una URL de punto de entrada . Todas las solicitudes posteriores que el agente de usuario pueda realizar se descubren dentro de la respuesta a cada solicitud. Los tipos de medios utilizados para estas representaciones y las relaciones de enlace que pueden contener son parte de la API. El cliente realiza la transición a través de los estados de la aplicación seleccionando entre los enlaces dentro de una representación o manipulando la representación de otras maneras que le permita su tipo de medio. De esta manera, la interacción RESTful está impulsada por hipermedia, en lugar de información fuera de banda. [2]

Por ejemplo, esta solicitud GET recupera un recurso de cuenta y solicita detalles en una representación JSON: [3]

OBTENER  /accounts/12345  HTTP / 1.1 Host :  banco.ejemplo.com

La respuesta es:

HTTP / 1.1  200  OK{ "cuenta": { "número_cuenta": 12345, "balance": { "Moneda: USD", "valor": 100,00 }, "Enlaces": { "depósitos": "/cuentas/12345/depósitos", "retiros": "/cuentas/12345/retiros", "transferencias": "/cuentas/12345/transferencias", "solicitudes de cierre": "/accounts/12345/solicitudes de cierre" } }}

La respuesta contiene estos posibles enlaces de seguimiento: PUBLICAR un depósito, retiro, transferencia o solicitud de cierre (para cerrar la cuenta).

Por ejemplo, más tarde, después de que la cuenta se haya sobregirado, hay un conjunto diferente de enlaces disponibles, porque la cuenta está sobregirada.

HTTP / 1.1  200  OK{ "cuenta": { "número_cuenta": 12345, "balance": { "Moneda: USD", "valor": -25,00 }, "Enlaces": { "depósitos": "/cuentas/12345/depósitos" } }}

Ahora solo hay un enlace disponible: depositar más dinero (publicando en depósitos). En su estado actual , los demás enlaces no están disponibles. De ahí el término motor de estado de aplicación . Las acciones posibles varían a medida que varía el estado del recurso.

Un cliente no necesita comprender todos los tipos de medios y mecanismos de comunicación que ofrece el servidor. La capacidad de comprender nuevos tipos de medios se puede adquirir en tiempo de ejecución a través del " código bajo demanda " proporcionado al cliente por el servidor. [1]

Orígenes

La restricción HATEOAS es una parte esencial de la característica de "interfaz uniforme" de REST, como se define en la tesis doctoral de Roy Fielding . [1] Fielding ha descrito con más detalle el concepto en su blog. [2]

El propósito de parte del rigor de ésta y otras restricciones REST, explica Fielding, es "el diseño de software a escala de décadas: cada detalle tiene como objetivo promover la longevidad del software y la evolución independiente. Muchas de las restricciones se oponen directamente a las limitaciones a corto plazo". Desafortunadamente, la gente es bastante buena en el diseño a corto plazo y, por lo general, pésima en el diseño a largo plazo". [2]

Implementaciones

Ver también

Referencias

  1. ^ abc Fielding, Roy Thomas (2000). "Transferencia representativa del estado (REST)". Estilos arquitectónicos y diseño de arquitecturas de software basadas en red (Doctor). Universidad de California, Irvine . pag. 82.ISBN​ 0599871180.
  2. ^ abcd Fielding, Roy T. (20 de octubre de 2008). "Las API REST deben estar basadas en hipertexto" . Consultado el 20 de mayo de 2010 .
  3. ^ Thijssen, Joshua (29 de octubre de 2016). "¿Qué es HATEOAS y por qué es importante para mi API REST?". Libro de cocina DESCANSO . Consultado el 5 de febrero de 2020 .
  4. ^ Bruto, Carson. "ODIOAS". htmx.org . Esto, a pesar de que ni XML ni JSON eran un hipermedia natural de la misma manera que HTML.
  5. ^ Sirena: una especificación hipermedia para representar entidades en GitHub
  6. ^ "Colección+JSON: tipo hipermedia" . Consultado el 25 de octubre de 2021 .
  7. ^ "API JSON: última especificación" . Consultado el 25 de octubre de 2021 .
  8. ^ "Hydra: API web impulsadas por hipermedia" . Consultado el 27 de octubre de 2021 .