Riepilogo rapido
Sto creando un micro-servizio di ricerca che consentirà la ricerca tra diversi tipi di risorse in un particolare sistema (ad esempio post di blog, utenti ecc.). L'API che verrà esposta verrà consumata da entrambe le applicazioni Web e dalle applicazioni mobili native.
La mia soluzione
Quello che sto considerando è il ritorno di un array di oggetti generici "SearchResult". Ad esempio:
"results": [
{
"title": "My Blog Post",
"description": "My blog post description",
"image": "https://img.com/icon.jpg"
"link": "https://link.com"
"type": "blog-post"
},
{
"title": "Henry Jacobson",
"description": "Henry was born in a small village.",
"image": "https://img.com/henry.jpg"
"link": "https://link.com/henry",
"type": "user"
}
]
Penso che sia abbastanza flessibile perché significa che indipendentemente dal tipo di risorsa che è stata trovata, sarà possibile analizzarla come un oggetto SearchResult generico sul lato client. Ciò significa che possiamo restituire nuove risorse in futuro senza doverci preoccupare di come andrà un parente particolare per analizzarle.
A volte, potrebbe essere necessario fornire dati aggiuntivi per consentire ai client di eseguire rendering personalizzati. Penso che questo potrebbe essere un buon modo per ottenere ciò:
"results": [
{
"title": "My Blog Post",
"description": "My blog post description",
"image": "https://img.com/icon.jpg",
"link": "https://link.com",
"type": "blog-post",
"extra": {
"category": "Finance",
"commentCount": "501"
}
},
{
"title": "Henry Jacobson",
"description": "Henry was born in a small village.",
"image": "https://img.com/henry.jpg",
"link": "https://link.com/henry",
"type": "user",
"extra": {
"status": "active",
"topFriends": ["Jerry", "Jamie"]
}
}
]
C'è qualcosa di grave in errore con questo approccio e se esiste, quale potrebbe essere un'alternativa migliore?