Limbajul aplicației hipertext - Hypertext Application Language
Hypertext Application Language ( HAL ) este o convenție standard pentru Internet Draft (o „lucrare în desfășurare”) pentru definirea hipermedia, cum ar fi link-uri către resurse externe în cadrul codului JSON sau XML (cu toate acestea, ultima versiune a HAL Internet-Draft a expirat pe 12 noiembrie, 2016.). Standardul a fost propus inițial în iunie 2012 special pentru utilizarea cu JSON și de atunci a devenit disponibil în două variante, JSON și XML. Cele două tipuri MIME asociate sunt de tip media: application / hal + xml și de tip media: application / hal + json.
HAL a fost creat pentru a fi simplu de utilizat și ușor de aplicat în diferite domenii, evitând nevoia de a impune orice cerințe cu privire la modul de structurare a proiectului. Menținând această abordare cu impact minim, HAL le-a permis dezvoltatorilor să creeze biblioteci de uz general care pot fi ușor încorporate pe orice API care utilizează HAL.
API-urile care adoptă HAL simplifică utilizarea bibliotecilor open source și fac posibilă interacțiunea cu API folosind JSON sau XML. Alternativa ar fi aceea de a dezvolta un format proprietar care, la rândul său, îi obligă pe dezvoltatori să învețe cum să folosească încă un format străin.
Convenţie
HAL este structurat în așa fel încât să reprezinte elemente bazate pe două concepte: Resurse și Linkuri. Resursele constau din linkuri URI , resurse încorporate, datele dvs. standard (fie JSON sau XML) și linkuri non-URI. Link-urile au un URI țintă, precum și numele link-ului (denumit „rel”), precum și proprietăți opționale concepute pentru a ține cont de deprecierea și negocierea conținutului.
Exemplu
Resurse generale
{
"_links": {
"self": {
"href": "http://example.com/api/book/hal-cookbook"
}
},
"id": "hal-cookbook",
"name": "HAL Cookbook"
}
Resursă încorporată
{
"_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"
}
Colecții
{
"_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",
"name": "Shahadat Hossain Khan",
"homepage": "http://author-example.com"
}
},
"id": "hal-cookbook",
"name": "HAL Cookbook"
}