Ho un endpoint che restituisce una raccolta di elementi singoli (non ho restituito solo l'istanza di oggetto per mantenere la coerenza con la convenzione resource-as-collection, quindi solo get-by-id restituisce una singola istanza)
GET /devices?serialNumber=12345
[
{
"id": 1,
"serialNumber": "12345"
}
]
E il nuovo requisito è apparso: alcuni dispositivi sono collegati a coppie e mentre cercano il dispositivo 12345
che è accoppiato con il dispositivo 78901
Ho bisogno di recuperarli entrambi (preferibilmente in una singola chiamata HTTP). Quali sono le mie migliori opzioni? Ho provato con:
GET /devices?serialNumber=12345
[
{
"id": 1,
"serialNumber": "12345"
},
{
"id": 2,
"serialNumber": "78901"
}
]
Ma ciò interrompe la semantica (I filter devices rresoure "list" per un S / N e improvvisamente un altro dispositivo con diversi S / N si apre)
Poi ho provato questo:
GET /devices?serialNumber=12345
[
{
"id": 1,
"serialNumber": "12345"
"connected":
{
"id": 2,
"serialNumber": "78901"
}
}
]
Tuttavia, la risorsa annidata ricorsivamente non si sente corretta poiché è completamente diversa da come viene espresso il modello di dominio. C'è un modo migliore per progettare questo endpoint senza esporre i dettagli di come sono collegati? C'è una logica aziendale che è piuttosto complicata e irrilevante per il consumatore endpoint, lei ha solo bisogno di sapere se c'è un dispositivo associato o meno.