H.A.L.
1
{
2
"_links": {
3
"self": { "href": "/orders" },
4
"curies": [{
5
"name": "ea",
6
"href": "http://example.com/docs/rels/{rel}",
7
"templated": true
8
}],
9
"next": { "href": "/orders?page=2" },
10
"ea:find": {
11
"href": "/orders{?id}",
12
"templated": true
13
},
14
"ea:admin": [{
15
"href": "/admins/2",
16
"title": "Fred"
17
}, {
18
"href": "/admins/5",
19
"title": "Kate"
20
}]
21
},
22
"currentlyProcessing": 14,
23
"shippedToday": 20,
24
"_embedded": {
25
"ea:order": [{
26
"_links": {
27
"self": { "href": "/orders/123" },
28
"ea:basket": { "href": "/baskets/98712" },
29
"ea:customer": { "href": "/customers/7809" }
30
},
31
"total": 30.00,
32
"currency": "USD",
33
"status": "shipped"
34
}, {
35
"_links": {
36
"self": { "href": "/orders/124" },
37
"ea:basket": { "href": "/baskets/97213" },
38
"ea:customer": { "href": "/customers/12369" }
39
},
40
"total": 20.00,
41
"currency": "USD",
42
"status": "processing"
43
}]
44
}
45
}
Copied!

Cool 👍

  • Simple, clair et facile à implémenter.
  • Les "templated links" sont très prometteurs et permettent un découplage entre le code client et l’API.
  • Les "curies" permettent de facilement lier les ressources à leur documentation et pourquoi pas un schéma (mais ce n’est pas défini par H.A.L.).

Pas cool 👎

  • Comme son nom l’indique, H.A.L. se focalise uniquement sur le linking. Le périmètre est donc très limité.
  • La propriété _embedded manque d’intérêt et peut provoquer des conflits entre les propriétés de la ressource et les propriétés _embedded.
  • De nombreuses implémentations mais la plupart ne sont plus maintenues depuis des mois voire des années.
Dernière mise à jour 2yr ago
Copier le lien