Saltar al contenido

Estructuras complejas de API REST en Jitterbit App Builder

Descripción general

De forma predeterminada, una solicitud GET contra un recurso de API REST de App Builder devuelve datos de una única tabla. La API REST de App Builder también admite estructuras complejas: anidar datos de tablas relacionadas en una única respuesta JSON, en lugar de requerir que quien realiza la llamada haga una solicitud separada para cada tabla relacionada.

Por ejemplo, un recurso customer podría anidar sus orders relacionadas, y cada pedido podría a su vez anidar sus items, de modo que una única solicitud GET contra customer devuelve un cliente junto con sus pedidos y los artículos de línea de cada pedido, todo en una sola respuesta.

Nota

Las estructuras complejas solo se admiten para operaciones GET. Otros métodos HTTP, como POST y PUT, no se admiten.

Esta página cubre:

Agregar un nodo secundario

Una vez que hayas publicado un recurso para tu recurso raíz, anidas datos adicionales bajo él agregando nodos secundarios. Cada nodo que agregues se convierte en un nivel en la estructura JSON resultante y puede tener a su vez nodos secundarios adicionales, de modo que puedas anidar datos tan profundamente como tu modelo de datos lo requiera.

  1. Ve a IDE > REST APIs.

  2. La pestaña REST APIs enumera todos los puntos finales actuales en el panel Services. Localiza el mosaico perteneciente al recurso que buscas y haz clic en su icono de chevron para abrir la página REST API de ese recurso.

  3. Localiza el punto final al que deseas agregar nodos secundarios en el panel Resources. Haz clic en su icono de detalles para ver el diálogo Resource.

  4. En la pestaña Nodes, haz clic en + Node. Se abre el diálogo Node:

    Diálogo de nodo

  5. Establece los parámetros del nuevo nodo, incluido bajo qué nodo padre se anida y de qué tabla recupera datos.

  6. Haz clic en Save. El panel Fields se vuelve disponible para este nodo.

  7. En el panel Fields, haz clic en + Field para agregar y configurar los campos del nodo.

  8. Repite los pasos 4 a 7 según sea necesario para anidar nodos secundarios adicionales, incluso bajo el nodo que acabas de crear, para anidar una estructura más de un nivel de profundidad.

Parámetros del nodo

Cada nodo, ya sea el nodo raíz implícito propio de un recurso o un nodo secundario que agregues, tiene las siguientes propiedades, que controlan cómo se recupera ese nivel de la estructura y cómo se representa en la respuesta:

Nombre Descripción
Parent El nodo padre en la jerarquía.
Name El nombre de este nodo en la estructura de árbol. El nombre puede incluir barras diagonales para anidar la estructura aún más profundamente, sin tener que crear un nodo intermedio para cada nivel.
Table La tabla de la que recuperar datos.
Node Type El tipo de nodo.
  • Array de objetos: Este es el tipo predeterminado, donde cada fila de la tabla es un objeto JSON.
  • Array de escalares: Una matriz de elementos de un solo valor, serializada en una matriz JSON de escalares. La tabla debe contener columnas Index y Value.
  • Objeto: Se asigna a un único objeto JSON, eliminando completamente la matriz JSON. La tabla debe devolver como máximo una fila.
Expand By Default Determina si los datos del nodo se incluyen automáticamente en la respuesta. Quienes realizan llamadas pueden anular esto usando el parámetro de consulta $expand.
  • No expandir: (Predeterminado.) Los datos del nodo no se incluyen a menos que quien realiza la llamada lo solicite.
  • Expandir para elementos: Los datos del nodo se incluyen solo cuando el padre se solicita como un elemento único (por ejemplo, /orders/101).
  • Expandir para elementos y colecciones: Los datos del nodo se incluyen tanto cuando el padre se solicita como un elemento único como una colección (por ejemplo, /orders).
GET Max Limit El límite máximo de elementos que se pueden devolver en una solicitud GET, independientemente de lo que solicite quien realiza la llamada. Si es NULL, se utiliza el valor máximo predeterminado para la API REST.
Bindings Configura los enlaces entre los nodos padre e hijo, de modo que App Builder sepa qué columna padre corresponde a qué columna hijo al anidar los datos. Una vez que guardes el nodo, aparece un icono de enlace junto a Parent; haz clic en él para abrir el diálogo Bindings y luego asigna cada columna padre a su columna hijo correspondiente.

Campos de nodo

Cada campo que agregues al panel Fields de un nodo controla una parte de los datos en la salida JSON de ese nodo:

Nombre Descripción
Index La posición del campo en el nodo.
Name La clave del objeto utilizada para este campo en el documento JSON. Los nombres de campo deben ser únicos dentro de un nodo determinado y deben ser seguros para usar como claves JSON: evita espacios y puntuación.
Column La columna de tabla u objeto de negocio que respalda el campo.
Include By Default Si el campo se incluye en el documento de forma predeterminada. Los llamadores pueden anular esto usando el parámetro de consulta $fields.

Consultar una estructura anidada

Una vez que un recurso tiene una estructura anidada, dos parámetros de consulta de convención REST URI existentes se comportan de manera diferente cuando un llamador lo consulta:

  • $fields acepta una ruta a una tabla secundaria, por lo que los llamadores pueden seleccionar campos de datos anidados en lugar de solo la tabla raíz:

    Valor Selecciona
    details/* Todos los campos de la tabla secundaria details.
    details/name Solo el campo name de la tabla secundaria details.
    * Todos los campos en todas las tablas.
  • $expand es un parámetro verdadero/falso que permite a un llamador anular la configuración Expand By Default de un nodo, tanto para solicitudes de elemento como de colección. $expand=true expande el nodo independientemente de su valor predeterminado; $expand=false suprime la expansión independientemente de su valor predeterminado.