Campos relaciones en API REST v1/v2

Buenos días,
En nuestra aplicación usamos la API REST de forma bastante extendida, y hemos detectado una necesidad: en tablas con campos relacionados, por ejemplo ART_M el campo FAM, que es un numero que hace referencia a una ID de la tabla FAM_M, como podemos modificar el JS de la API para que devuelva en el JSON de forma anidada un objecto con el registro de la tabla FAM_M, no solo el ID.
No se si es posible o alguien lo ha desarrollado ya.
Gracias, un saludo

Buenas

Es algo con lo que me topé hace bastante tiempo y pues encontré dos formas para obtener los campos relacionados…

La primera fue que pasándole mediante los params de la url, sacáramos los campos de la tabla relacionada, por ejemplo: Yo tengo una tabla de artículos con su familia, pues entonces cuando haga la llamada a art_m?fields=id,name,fam.name de ese modo obtendrás el campo que necesitas, pero es poco usable en términos de desarrollo web.

La otra solución fue hacerlo por proceso y devolver registros a mi antojo, para eso tendrás que crear un proceso y devolverlo con la estructura que tu quieras, pero claro, te hace pesado el trabajo.

Saludos

Hola cloud1.

Modificar el API_REST es relativamente sencillo porque, aunque no estén documentados los scripts JS, se sigue bien el código.

La función listaToObjeto() convierte una lista a un objeto JSON sin desarrollar las relaciones plurales o los maestros.

Usas la función VTableInfo.fieldBindType() para detectar los campos punteros a maestro y modificas la función valorCampoJSON() para que devuelva el objeto JSON del registro maestro.

Esta solución está bien, pero tienes que entender que aumentará considerablemente el tamaño del resultado de las consultas API_REST, sobre todo si el tamaño del registro maestro es grande ya que se repetirá por cada puntero a maestro que haya en la lista.

Otra opción, como dice fran_garcia, es personalizar la petición mediante consultas _process.

Saludos
Paco Satué

Muchas gracias, finalmente creo que me quedare con esta solucion: “art_m?fields=id,name,fam.name”, en principio es suficiente. No sabia que existia, creo que no esta documentado

Es una solución que puedes usar, claro que eso te servirá por ejemplo en un entorno web, para sacar la ficha de un producto con todos sus parámetros, pero… también te digo que ¿Y si quiero por ejemplo un pedido y un array de objetos con todas sus lineas? Pues para cosas como esas no se podría y se tendría que hacer procesos aparte. A mi sinceramente no me gusta mucho como está planteada esta API REST ya que para hacer esas cosas, me termino haciendo un proceso para cada listado y eso luego en mantenibilidad, se nota.