Tenemos una lista de vídeos. Cada vídeo tiene una categoría y un autor. Tenemos endpoints CRUD para el video, la categoría o el autor.
Mi misión como front es hacer la página de ultimos videos, en la que sale una lista con 10 videos, y en cada video sale el titulo, la categoria y el autor:
"Le corto el pelo a mi novia y sale mal" "Bromas" "Juanito16"
Pues cuando pido los vídeos, me viene el video así:
{
videoId: 1;
titulo: "Le corto el pelo a mi novia";
categoriaId: 3;
autorId: 13213;
}
Y la idea es que luego pida la categoria 3 y el autor 13213 para sacar "categoria.descripcion" y "autor.nombre"
Aquí en concreto usamos angular y con los observables se puede hacer que se pida y se rellene solo, que me parece cojonudo, pero no quita que para listar 10 videos haga 1 (lista de videos) + 10 (categorias) + 10 (autores) = 21 peticiones
Según en cada app se el volumen de los datos y si se que en total hay por ejemplo 20 categorías, las pido todas y lo guardo en memoria y lo voy rellenando de ahí, pero eso no me convence nada porque por un lado me traigo datos que no necesito (si hubiera 200 categorias y necesito 5, o hago 5 peticiones o hago 1 y me traigo 195 datos que no me hacen falta)
Y este es el ejemplo pequeño, en realidad el video tiene como 10 objetos con ids.
Cuando hice cosas con microservicios era un poco de este palo, pero en el gateway se juntaba todo. En otros proyectos usaba graphQL y ahi pides de cada entidad lo que quieras.
Lo que yo les propongo es crear otra entidad que sea "VideoParaListado" en la que venga en vez del autorId, el nombre del autor o el link a su perfil o lo que necesite.
Me gustaría ver opiniones porque igual lo estoy entendiendo yo todo mal pero me cuesta mucho entenderlo, igual hay otra solución o es directamente. A mi me parece que está bastante claro y que es un diseño incorrecto.