Povedzme ze mam API ktore vracia zoznam clankov. Kazdy clanok ma nazov, obsah, kategorie, autora... a povedzme ze napriklad autor je objekt ktory obsahuje viacero udajov, mimo ID, ako je napriklad meno, url profilu, odkaz na avatar...
Bezne je kazdy clanok vo vratenom zozname samostatny objekt s plne vyplnenymi entitami. Co ak by som ale vratil odpoved tak, ze linkovane objekty by boli vedla vrateneho zoznamu a samotne embedovane objekty by boli len ID ako odkazy na konkretny objekt?
Cize namiesto:
{
"articles": {
123: {
"title": "foo",
"body": "bar",
"created_at": 1223456,
"created_by": {
"id": 45678,
"name": "Some User",
"avatar": "http://www.foobar.com/avatar.jpg"
}
}
}
}
by odpoved bola:
{
"articles": {
123: {
"title": "foo",
"body": "bar",
"created_at": 1223456,
"created_by": 963
}
},
"authors": {
963: {
"id": 45678,
"name": "Some User",
"avatar": "http://www.foobar.com/avatar.jpg"
}
}
}
A teda klient by si to musel vyskladat sam. Rozmyslam nad tym uz nejaku chvilu lebo mi pride celkom zbytocne robit vypisy objektov kde vratim 50 hlavnych zaznamov a 50x je tam rovnaky uzivatel, co je 49x viac informacii o uzivateloch nez je realne treba poslat. A samozrejme su tam aj dalsie objekty, mozno kategorie, obrazky s metadatami a proste cokolvek.
Rozmyslam ake to ma negativa to takto riesit, ale zatial som nansiel nic dolezite, tak ze aky je konsenzus?
Taktiez aj na backende je lahsie si len spravit zoznam objektov ktore treba nasledne nacitat podla id a len vlozit do odpovede nez prechadzat hlavny zoznam a hladat ktory objekt kam patri. Na frontende zase klient nemusit robit nic ine len response.authors[article.created_by] a ma autora.