Hypertext Application Language: Difference between revisions

Content deleted Content added
HAL is not mentioned in the JSON spec (RFC4627) at all, the reference should be to the initial HAL draft spec. Cleaned up other links
WikiCleanerBot (talk | contribs)
m v2.05b - Bot T20 CW#61 - Fix errors for CW project (Reference before punctuation)
 
(25 intermediate revisions by 21 users not shown)
Line 1:
{{Short description|Proposed computer definition standard}}
'''Hypertext Application Language''' ('''HAL''') is an [[Internet Draft]] (a "work in progress") standard convention for defining [[hypermedia]] such as links to external [[web resource|resources]] within [[JSON]] or [[XML]] code. It is documented in an [[Internet Draft]] (a "work in progress"), with the latest version 11 published the 10th of October 2023. The standard was initially proposed onin June 2012, specifically for use with JSON,<ref>{{cite web |last1=Kelly |first1=Mike |title=JSON Hypertext Application LanuageLanguage |url=https://tools.ietf.org/html/draft-kelly-json-hal-00 |publisher=IETF |accessdate=16 October 2018 |date=7 June 2012}}</ref> and has since become available in two variations, one each for JSON and XML. The two associated [[MIME]] types are media type: application/hal+xml and media type: application/hal+json.<ref>{{cite book|last1=Richardson|first1=Leonard|last2=Ruby|first2=Mike Amundsen ; foreword by Sam|title=RESTful Web APIs|date=2013|publisher=O'Reilly|___location=Sebastopol, CA|isbn=978-1-4493-5806-8|edition=First|chapter=7}}</ref>
 
HAL was created to be simple to use and easily applicable across different [[___domain (software engineering)|domains]] by avoiding the need to impose any requirements on how the project be structured. Maintaining this minimal impact approach, HAL has enabled developers to create general-purpose [[library (computing)|libraries]] which can be easily incorporated on any [[API]] that uses HAL.{{Citation needed|Reasonreason=RFC4627 does not mention HAL|date=16 October 2018}}
 
APIs that adopt HAL simplify the use of [[open-source software|open source]] libraries and make it possible to interact with the [[application programming interface|API]] using JSON or XML. The alternative would be having to develop a [[proprietary format]] which in turn forces developers to learn how to use yet another foreign format.<ref name="stateless">{{cite web|last1=Kelly|first1=Mike|title=HAL - Hypertext Application Language A lean hypermedia type|url=httphttps://stateless.cogroup/hal_specification.html|accessdate=23 July 2014|date=2011-06-13}}</ref>
 
== Convention ==
HAL is structured in such a way as to represent elements based on two concepts: Resources and Links. Resources consist of [[URI]] links, embedded resources, your standard data (be it JSON or XML), and non URI links. Links have a target URI, as well as the name of the link (referred to as 'rel'), as well as optional properties designed to be mindful of deprecation and content negotiation.<ref name="stateless"/>
 
==Example==
General Resource
<sourcesyntaxhighlight lang="json">
{
"_links": {
Line 20 ⟶ 21:
"name": "HAL Cookbook"
}
</syntaxhighlight>
</source>
Embedded resource
<sourcesyntaxhighlight lang="json">
{
"_links": {
Line 33 ⟶ 34:
"_links": {
"self": {
"href": "http://author-example.com/api/author/shahadat"
}
},
"id": "shahadat",
"name": "Shahadat Hossain Khan",
"homepage": "http://author-example.com"
}
},
Line 43 ⟶ 45:
"name": "HAL Cookbook"
}
</syntaxhighlight>
</source>
Collections
<sourcesyntaxhighlight lang="json">
{
"_links": {
Line 68 ⟶ 70:
"_links": {
"self": {
"href": "http://author-example.com/api/author/shahadat"
}
},
"id": "shahadat",
"name": "Shahadat Hossain Khan",
"homepage": "http://author-example.com"
}
},
Line 78 ⟶ 81:
"name": "HAL Cookbook"
}
</syntaxhighlight>
</source>
 
==See also==
Line 88 ⟶ 91:
 
==External links==
* [https://tools.ietf.org/html/draft-kelly-json-hal-0811 JSON Hypertext Application Language latest draft]
 
[[Category:JSON]]
Line 96 ⟶ 99:
[[Category:XML-based standards]]
[[Category:World Wide Web Consortium standards]]
 
 
{{Web-stub}}