El lenguaje de aplicación de hipertexto ( HAL ) es una convención para definir hipermedia , como enlaces a recursos externos, dentro de código JSON o XML . Está documentado en un borrador de Internet (un "trabajo en progreso"), cuya última versión, la 11, se publicó 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 application/hal+xml y application/hal+json. [ 2 ]
HAL se creó para ser sencillo de usar y fácilmente aplicable en diferentes ámbitos , evitando la necesidad de imponer requisitos sobre la estructura del proyecto. Gracias a este enfoque de mínimo impacto, HAL ha permitido a los desarrolladores crear bibliotecas de propósito general que pueden incorporarse a cualquier API que utilice HAL.
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, lo que a su vez obligaría a los desarrolladores a aprender a usar otro formato ajeno. [ 3 ]
Convención
HAL está estructurado de tal manera que representa elementos basados en dos conceptos: Recursos y Enlaces. Los Recursos consisten en enlaces URI , recursos incrustados, datos estándar (ya sean JSON o XML) y enlaces que no son URI. Los Enlaces tienen un URI de destino, así como el nombre del enlace (denominado 'rel'), y propiedades opcionales diseñadas para tener en cuenta la obsolescencia y la negociación de contenido. [ 3 ]
Ejemplo
Recursos generales
{ "_links" : { "self" : { "href" : "http://example.com/api/book/hal-cookbook" } }, "id" : "hal-cookbook" , "name" : "HAL Cookbook" }Recurso incrustado
{ "_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" }Véase también
Referencias
- ↑ Kelly, Mike (7 de junio de 2012). "JSON Hypertext Application Language" . IETF . Consultado el 16 de octubre de 2018 .
- ↑ Richardson, Leonard; Ruby, Mike Amundsen; prólogo de Sam (2013). "7". API web RESTful (Primera ed.). Sebastopol, CA: O'Reilly. ISBN 978-1-4493-5806-8.
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - 1 2 Kelly, Mike (13 de junio de 2011). "HAL - Hypertext Application Language Un tipo de hipermedia ligero" . Recuperado el 23 de julio de 2014 .
Enlaces externos
- Último borrador del lenguaje de aplicación de hipertexto JSON
- JSON
- formatos de serialización de datos
- Lenguajes de marcado
- lenguajes de marcado XML
- Estándares basados en XML
- Estándares del Consorcio World Wide Web