Il collegamento self
viene utilizzato anche per le entità incorporate in cui può essere utilizzato per navigare verso l'entità corretta. Vedi questo esempio HAL:
{
"_links": {
"self": { "href": "/orders" },
"curies": [{ "name": "ea", "href": "http://example.com/docs/rels/{rel}", "templated": true }],
"next": { "href": "/orders?page=2" },
"ea:find": {
"href": "/orders{?id}",
"templated": true
},
"ea:admin": [{
"href": "/admins/2",
"title": "Fred"
}, {
"href": "/admins/5",
"title": "Kate"
}]
},
"currentlyProcessing": 14,
"shippedToday": 20,
"_embedded": {
"ea:order": [{
"_links": {
"self": { "href": "/orders/123" },
"ea:basket": { "href": "/baskets/98712" },
"ea:customer": { "href": "/customers/7809" }
},
"total": 30.00,
"currency": "USD",
"status": "shipped"
}, {
"_links": {
"self": { "href": "/orders/124" },
"ea:basket": { "href": "/baskets/97213" },
"ea:customer": { "href": "/customers/12369" }
},
"total": 20.00,
"currency": "USD",
"status": "processing"
}]
}
}
L'unica motivazione che potrei pensare per avere collegamenti in se stessi con le entità di primo livello è che se si inserisce il servizio su qualche entità arbitraria, il collegamento personale fornisce informazioni sul proprio contesto nel servizio. Nell'esempio sopra riportato se qualcuno mi ha dato un link a http://example.com/myservice/special/dev/2017/admins/2
, il collegamento di auto relativo alla root di servizio ( /admins/2
) sarebbe utile per trovare la radice del servizio e capire che probabilmente ci sono più amministratori, ecc.