El lenguaje de aplicación de hipertexto ( HAL ) es una convención para definir hipermedios como enlaces a recursos externos dentro de código JSON o XML . Está documentado en un borrador de Internet (un "trabajo en progreso"), con la última versión 11 publicada el 10 de octubre de 2023. El estándar se propuso inicialmente en junio de 2012 específicamente para su uso con JSON [1] y desde entonces está disponible en dos variantes, JSON y XML. Los dos tipos MIME asociados son el tipo de medio: application/hal+xml y el tipo de medio: application/hal+json. [2]
HAL se creó para que fuera fácil de usar y de aplicar en distintos dominios , evitando la necesidad de imponer requisitos sobre cómo debe estructurarse el proyecto. Manteniendo este enfoque de impacto mínimo, HAL ha permitido a los desarrolladores crear bibliotecas de uso general que se pueden incorporar fácilmente en cualquier API que utilice HAL. [ cita requerida ]
Las API que adoptan HAL simplifican el uso de bibliotecas de código abierto y permiten interactuar con la API mediante JSON o XML. La alternativa sería tener que desarrollar un formato propietario que, a su vez, obligaría a los desarrolladores a aprender a utilizar otro formato ajeno. [3]
HAL está estructurado de tal manera que representa elementos basados en dos conceptos: recursos y enlaces. Los recursos consisten en enlaces URI , recursos integrados, sus datos estándar (ya sea JSON o XML) y enlaces que no son URI. Los enlaces tienen un URI de destino, así como el nombre del enlace (denominado "rel"), así como propiedades opcionales diseñadas para tener en cuenta la desaprobación y la negociación de contenido. [3]
Recursos generales
{ "_links" : { "self" : { "href" : "http://example.com/api/book/hal-cookbook" } }, "id" : "hal-cookbook" , "name" : "Libro de cocina de HAL" }
Recurso integrado
{ "_links" : { "self" : { "href" : "http://example.com/api/book/hal-cookbook" } }, "_embedded" : { "author" : { "_links" : { "self" : { "href" : "http://example.com/api/author/shahadat" } }, "id" : "shahadat" , "name" : "Shahadat Hossain Khan" , "homepage" : "http://author-example.com" } }, "id" : "hal-cookbook" , "name" : "HAL Cookbook" }
Colecciones
{ "_links" : { "self" : { "href" : "http://example.com/api/book/hal-cookbook" }, "next" : { "href" : "http://example.com/api/book/hal-case-study" }, "prev" : { "href" : "http://example.com/api/book/json-and-beyond" }, "first" : { "href" : "http://example.com/api/book/catalog" }, "last" : { "href" : "http://example.com/api/book/upcoming-books" } }, "_embedded" : { "author" : { "_links" : { "self" : { "href" : "http://example.com/api/author/shahadat" } }, "id" : "shahadat" , "nombre" : "Shahadat Hossain Khan" , "página de inicio" : "http://author-example.com" } }, "id" : "hal-cookbook" , "nombre" : "HAL Cookbook" }
{{cite book}}
: CS1 maint: varios nombres: lista de autores ( enlace )