Ho alcune risorse HTTP e mi chiedo se includere i modelli di uno nell'altro sia accettabile o se esiste un metodo più pulito.
In questo esempio, abbiamo un sacco di risorse "news" e gli utenti possono iscriversi tramite una risorsa chiamata "subscription":
==>/news-items/{id}/
{
"id": 987,
"url": "http://example.com/foo/bar",
"title": "Wow! A Headline",
}
E
==> /users/{user-id}/subscriptions/
[
{
"id" : 123
"keywords": "Mr Celebrity"
},
...
]
E poi l'endpoint che include i modelli di entrambe le risorse ...
==> /users/{user-id}/my-news/
[
{
"id": 987,
"url": "http://example.com/foo/bar",
"title": "Wow! A Headline",
"matched_by": [
{
"id": 123,
"keywords": "Wow",
},
...
]
},
...
]
Il caso d'uso è abbastanza autoesplicativo per questo: un feed di notizie con 'abbinato da' Mr Celebrity '' accanto ad esso. È un po 'strano avere un endpoint che consiste solo di modelli nidificati / compositi di altri endpoint ... Questa pratica è accettabile o problematica?
L'endpoint sarà di sola lettura e le altre opzioni sembrano essere:
- Stile HATEOAS: "matched_by" e le notizie sono URL che puntano a una notizia e un abbonamento. Richiederebbe più richieste HTTP.
- Una sorta di risposta multi-payload con un carico utile primario HATEOAS e un carico utile "correlato" delle risorse di riferimento. Non visto prima.
- ??? qualche altra opzione?
Se il mio approccio è valido, ottimo, ma voglio sapere cosa farebbero gli altri se c'è un'alternativa migliore.
Grazie:)