Compartir a través de


Cómo llamar a puntos de conexión de GraphQL

Los puntos de conexión de GraphQL en Data API Builder (DAB) permiten consultar y modificar datos con precisión. Cada consulta declara exactamente qué campos necesita y admite argumentos para filtrar, ordenar y paginar los resultados.

De forma predeterminada, DAB hospeda su punto de conexión de GraphQL en:

https://{base_url}/graphql

Las entidades expuestas a través de la configuración se incluyen automáticamente en el esquema GraphQL. Por ejemplo, si tiene books entidades y authors , ambas aparecen como campos raíz en el esquema.

Nota:

Use cualquier cliente o IDE moderno de GraphQL (como Apollo, Insomnio o GRAPHQL de VS Code) para explorar los campos de esquema y autocompletar.

Palabras clave admitidas en data API Builder

Concepto GraphQL Propósito
Projection items Elección de los campos que se van a devolver
Filtros filtro Restricción de filas por condición
Ordenación orderBy Definición del criterio de ordenación
Tamaño de página primero Limitar los elementos por página
Continuación después Continuar desde la última página

Estructura básica

Cada consulta de GraphQL comienza con un campo raíz que representa una entidad.

{
  books {
    items {
      id
      title
      price
    }
  }
}

El resultado es un objeto JSON con la misma forma que el conjunto de selección:

{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "price": 20 },
        { "id": 2, "title": "Foundation", "price": 18 }
      ]
    }
  }
}

Nota:

De forma predeterminada, DAB devuelve hasta 100 elementos por consulta a menos que se configure lo contrario (runtime.pagination.default-page-size).

Tipos de consulta

Cada entidad admite dos consultas raíz estándar:

Query Descripción
entity_by_pk Devuelve un registro por su clave principal.
entities Devuelve una lista de registros que coinciden con filtros.

Ejemplo de devolución de un registro:

{
  book_by_pk(id: 1010) {
    title
    year
  }
}

Ejemplo que devuelve múltiples elementos:

{
  books {
    items {
      id
      title
    }
  }
}

Filtrado de resultados

Use el filter argumento para restringir los registros que se devuelven.

{
  books(filter: { title: { contains: "Foundation" } }) {
    items { id title }
  }
}

Esta consulta devuelve todos los libros cuyo título contiene "Foundation".

Los filtros pueden combinar comparaciones con operadores lógicos:

{
  authors(filter: {
    or: [
      { first_name: { eq: "Isaac" } }
      { last_name: { eq: "Asimov" } }
    ]
  }) {
    items { first_name last_name }
  }
}

Consulte la referencia del argumento de filtro para operadores admitidos como eq, neq, lt, ltey isNull.

Ordenar resultados

El orderBy argumento define cómo se ordenan los registros.

{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}

Esto devuelve libros ordenados por year descendente y, a continuación, por title.

Consulte la referencia de argumento orderBy para obtener más detalles.

Limitar los resultados

El first argumento limita el número de registros que se devuelven en una sola solicitud.

{
  books(first: 5) {
    items { id title }
  }
}

Esto devuelve los cinco primeros libros ordenados por clave principal de forma predeterminada. También puede usar first: -1 para solicitar el tamaño máximo de página configurado.

Obtenga más información en la primera referencia de argumentos.

Resultados continuos

Para obtener la página siguiente, use el argumento after con el cursor de la consulta anterior.

{
  books(first: 5, after: "eyJpZCI6NX0=") {
    items { id title }
  }
}

El after token marca dónde finalizó la página anterior. Consulte después de la referencia del argumento para obtener más detalles.

Selección de campos (proyección)

En GraphQL, elija exactamente qué campos aparecen en la respuesta. No hay ningún comodín como SELECT *. Solicite solo lo que necesita.

{
  books {
    items { id title price }
  }
}

También puede usar alias para cambiar el nombre de los campos en la respuesta:

{
  books {
    items {
      bookTitle: title
      cost: price
    }
  }
}

Consulte la referencia de proyección de campo para obtener más información.