Saiba como usar o GraphQL com o AEM - Exemplos de conteúdo e consultas

Saiba como usar o GraphQL com o AEM para fornecer conteúdo em headless, explorando exemplos de conteúdo e consultas.

Para começar a usar consultas GraphQL e saber como elas funcionam com Fragmentos de conteúdo do AEM, seria de ajuda examinar alguns exemplos práticos.

Para isso, consulte:

GraphQL - Exemplos de consultas usando o Exemplo de estrutura do Fragmento de conteúdo

Veja esses exemplos de consultas para obter ilustrações de como criar consultas, e veja também os exemplos de resultados.

OBSERVAÇÃO

Dependendo do seu caso, você pode acessar diretamente a Interface GraphiQL incluída na API GraphQL do AEM para enviar e testar consultas.

É possível acessar o editor de consultas por meio de:

  • Ferramentas -> Geral -> Editor de consultas GraphQL
  • diretamente; por exemplo, http://localhost:4502/aem/graphiql.html
OBSERVAÇÃO

Exemplo de consulta - Todos os esquemas e tipos de dados disponíveis

Isso retornará todos os types para todos os esquemas disponíveis.

Exemplo de consulta

{
  __schema {
    types {
      name
      description
    }
  }
}

Exemplo de resultado

{
  "data": {
    "__schema": {
      "types": [
        {
          "name": "AdventureModel",
          "description": null
        },
        {
          "name": "AdventureModelArrayFilter",
          "description": null
        },
        {
          "name": "AdventureModelFilter",
          "description": null
        },
        {
          "name": "AdventureModelResult",
          "description": null
        },
        {
          "name": "AdventureModelResults",
          "description": null
        },
        {
          "name": "AllFragmentModels",
          "description": null
        },
        {
          "name": "ArchiveRef",
          "description": null
        },
        {
          "name": "ArrayMode",
          "description": null
        },
        {
          "name": "ArticleModel",
          "description": null
        },

...more results...

        {
          "name": "__EnumValue",
          "description": null
        },
        {
          "name": "__Field",
          "description": null
        },
        {
          "name": "__InputValue",
          "description": null
        },
        {
          "name": "__Schema",
          "description": "A GraphQL Introspection defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, the entry points for query, mutation, and subscription operations."
        },
        {
          "name": "__Type",
          "description": null
        },
        {
          "name": "__TypeKind",
          "description": "An enum describing what kind of type a given __Type is"
        }
      ]
    }
  }
}

Exemplo de consulta - Todas as informações sobre todas as cidades

Para recuperar todas as informações sobre todas as cidades, você pode usar essa consulta básica:
Exemplo de consulta

{
  cityList {
    items
  }
}

Quando executada, o sistema expandirá automaticamente a consulta para incluir todos os campos:

{
  cityList {
    items {
      _path
      name
      country
      population
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "_path": "/content/dam/sample-content-fragments/cities/basel",
          "name": "Basel",
          "country": "Switzerland",
          "population": 172258
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/berlin",
          "name": "Berlin",
          "country": "Germany",
          "population": 3669491
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/bucharest",
          "name": "Bucharest",
          "country": "Romania",
          "population": 1821000
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/san-francisco",
          "name": "San Francisco",
          "country": "USA",
          "population": 883306
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/san-jose",
          "name": "San Jose",
          "country": "USA",
          "population": 1026350
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/stuttgart",
          "name": "Stuttgart",
          "country": "Germany",
          "population": 634830
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/zurich",
          "name": "Zurich",
          "country": "Switzerland",
          "population": 415367
        }
      ]
    }
  }
}

Exemplo de consulta - Nomes de todas as cidades

Esta é uma consulta simples para retornar o namede todas as entradas no esquemacity.

Exemplo de consulta

query {
  cityList {
    items {
      name
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "Basel"
        },
        {
          "name": "Berlin"
        },
        {
          "name": "Bucharest"
        },
        {
          "name": "San Francisco"
        },
        {
          "name": "San Jose"
        },
        {
          "name": "Stuttgart"
        },
        {
          "name": "Zurich"
        }
      ]
    }
  }
}

Exemplo de consulta - Um único fragmento de cidade específico

Esta é uma consulta para retornar os detalhes de uma única entrada de fragmento em um local específico no repositório.

Exemplo de consulta

{
  cityByPath (_path: "/content/dam/sample-content-fragments/cities/berlin") {
    item {
      _path
      name
      country
      population
     categories
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityByPath": {
      "item": {
        "_path": "/content/dam/sample-content-fragments/cities/berlin",
        "name": "Berlin",
        "country": "Germany",
        "population": 3669491,
        "categories": [
          "city:capital",
          "city:emea"
        ]
      }
    }
  }
}

Exemplo de consulta - Todas as cidades com uma variação nomeada

Se você criar uma nova variação chamada "Centro de Berlim" (berlin_centre), para a city Berlim, use uma consulta para retornar detalhes da variação.

Exemplo de consulta

{
  cityList (variation: "berlin_center") {
    items {
      _path
      name
      country
      population
      categories
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "_path": "/content/dam/sample-content-fragments/cities/berlin",
          "name": "Berlin",
          "country": "Germany",
          "population": 3669491,
          "categories": [
            "city:capital",
            "city:emea"
          ]
        }
      ]
    }
  }
}

Exemplo de consulta - Detalhes completos do CEO e funcionários de uma empresa

Usando a estrutura dos fragmentos aninhados, essa consulta retorna os detalhes completos do CEO de uma empresa e de todos os funcionários dela.

Exemplo de consulta

query {
  companyList {
    items {
      name
      ceo {
        _path
        name
        firstName
        awards {
        id
          title
        }
      }
      employees {
       name
        firstName
       awards {
         id
          title
        }
      }
    }
  }
}

Exemplo de resultados

{
  "data": {
    "companyList": {
      "items": [
        {
          "name": "Apple Inc.",
          "ceo": {
            "_path": "/content/dam/sample-content-fragments/persons/steve-jobs",
            "name": "Jobs",
            "firstName": "Steve",
            "awards": []
          },
          "employees": [
            {
              "name": "Marsh",
              "firstName": "Duke",
              "awards": []
            },
            {
              "name": "Caulfield",
              "firstName": "Max",
              "awards": [
                {
                  "id": "GB",
                  "title": "Gameblitz"
                }
              ]
            }
          ]
        },
        {
          "name": "Little Pony, Inc.",
          "ceo": {
            "_path": "/content/dam/sample-content-fragments/persons/adam-smith",
            "name": "Smith",
            "firstName": "Adam",
            "awards": []
          },
          "employees": [
            {
              "name": "Croft",
              "firstName": "Lara",
              "awards": [
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            },
            {
              "name": "Slade",
              "firstName": "Cutter",
              "awards": [
                {
                  "id": "GB",
                  "title": "Gameblitz"
                },
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            }
          ]
        },
        {
          "name": "NextStep Inc.",
          "ceo": {
            "_path": "/content/dam/sample-content-fragments/persons/steve-jobs",
            "name": "Jobs",
            "firstName": "Steve",
            "awards": []
          },
          "employees": [
            {
              "name": "Smith",
              "firstName": "Joe",
              "awards": []
            },
            {
              "name": "Lincoln",
              "firstName": "Abraham",
              "awards": []
            }
          ]
        }
      ]
    }
  }
}

Exemplo de consulta - Todas as pessoas com o nome de "Jobs" ou "Smith"

Isso filtrará todas as persons para qualquer uma que tenha o nome Jobs ou Smith.

Exemplo de consulta

query {
  personList(filter: {
    name: {
      _logOp: OR
      _expressions: [
        {
          value: "Jobs"
        },
        {
          value: "Smith"
        }
      ]
    }
  }) {
    items {
      name
      firstName
    }
  }
}

Exemplo de resultados

{
  "data": {
    "personList": {
      "items": [
        {
          "name": "Smith",
          "firstName": "Adam"
        },
        {
          "name": "Smith",
          "firstName": "Joe"
        },
        {
          "name": "Jobs",
          "firstName": "Steve"
        }
      ]
    }
  }
}

Exemplo de consulta - Todas as pessoas que não tenham o nome "Jobs"

Isso filtrará todas as persons para qualquer uma que tenha o nome Jobs ou Smith.

Exemplo de consulta

query {
  personList(filter: {
    name: {
      _expressions: [
        {
          value: "Jobs"
          _operator: EQUALS_NOT
        }
      ]
    }
  }) {
    items {
      name
      firstName
    }
  }
}

Exemplo de resultados

{
  "data": {
    "personList": {
      "items": [
        {
          "name": "Lincoln",
          "firstName": "Abraham"
        },
        {
          "name": "Smith",
          "firstName": "Adam"
        },
        {
          "name": "Slade",
          "firstName": "Cutter"
        },
        {
          "name": "Marsh",
          "firstName": "Duke"
        },
        {
          "name": "Smith",
          "firstName": "Joe"
        },
        {
          "name": "Croft",
          "firstName": "Lara"
        },
        {
          "name": "Caulfield",
          "firstName": "Max"
        }
      ]
    }
  }
}

Exemplo de consulta - Todas as aventuras cujo _path comece com um prefixo específico

Todas as adventures em que o _path comece com um prefixo específico (/content/dam/wknd/en/adventures/cycling).

Exemplo de consulta

query {
  adventureList(
    filter: {
      _path: {
        _expressions: [
        {
          value: "/content/dam/wknd/en/adventures/cycling"
         _operator: STARTS_WITH
        }]
       }
    })
    {
    items {
      _path
    }
  }
}

Exemplo de resultados

{
  "data": {
    "adventureList": {
      "items": [
        {
          "_path": "/content/dam/wknd/en/adventures/cycling-southern-utah/cycling-southern-utah"
        },
        {
          "_path": "/content/dam/wknd/en/adventures/cycling-tuscany/cycling-tuscany"
        }
      ]
    }
  }
}

Exemplo de consulta - todas as cidades localizadas na Alemanha ou na Suíça com população entre 400.000 e 999.999

Aqui, uma combinação de campos é filtrada. Um AND (implícito) é usado para selecionar o intervalo population, enquanto um OR (explícito) é usado para selecionar as cidades necessárias.

Exemplo de consulta

query {
  cityList(filter: {
    population: {
      _expressions: [
        {
          value: 400000
          _operator: GREATER_EQUAL
        }, {
          value: 1000000
          _operator: LOWER
        }
      ]
    },
    country: {
      _logOp: OR
      _expressions: [
        {
          value: "Germany"
        }, {
          value: "Switzerland"
        }
      ]
    }
  }) {
    items {
      name
      population
      country
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "Stuttgart",
          "population": 634830,
          "country": "Germany"
        },
        {
          "name": "Zurich",
          "population": 415367,
          "country": "Switzerland"
        }
      ]
    }
  }
}

Exemplo de consulta - todas as cidades com SAN no nome, podendo ser maiúsculas ou minúsculas

Esta consulta interroga todas as cidades que tenham SAN no nome, podendo ser maiúsculas ou minúsculas.

Exemplo de consulta

query {
  cityList(filter: {
    name: {
      _expressions: [
        {
          value: "SAN"
          _operator: CONTAINS
          _ignoreCase: true
        }
      ]
    }
  }) {
    items {
      name
      population
      country
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "San Francisco",
          "population": 883306,
          "country": "USA"
        },
        {
          "name": "San Jose",
          "population": 1026350,
          "country": "USA"
        }
      ]
    }
  }
}

Exemplo de consulta - filtrar em uma matriz com um item que deve ocorrer pelo menos uma vez

Essa consulta filtra em uma matriz com um item (city:na) que deve ocorrer pelo menos uma vez.

Exemplo de consulta

query {
  cityList(filter: {
    categories: {
      _expressions: [
        {
          value: "city:na"
          _apply: AT_LEAST_ONCE
        }
      ]
    }
  }) {
    items {
      name
      population
      country
      categories
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "San Francisco",
          "population": 883306,
          "country": "USA",
          "categories": [
            "city:beach",
            "city:na"
          ]
        },
        {
          "name": "San Jose",
          "population": 1026350,
          "country": "USA",
          "categories": [
            "city:na"
          ]
        }
      ]
    }
  }
}

Exemplo de consulta - filtrar em um valor de matriz exato

Essa consulta filtra em um valor de matriz exato.

Exemplo de consulta

query {
  cityList(filter: {
    categories: {
      _expressions: [
        {
          values: [
            "city:beach",
            "city:na"
          ]
        }
      ]
    }
  }) {
    items {
      name
      population
      country
      categories
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "San Francisco",
          "population": 883306,
          "country": "USA",
          "categories": [
            "city:beach",
            "city:na"
          ]
        }
      ]
    }
  }
}

Exemplo de consulta para fragmentos de conteúdo aninhados - todas as empresas que tenham pelo menos um funcionário com o nome "Smith"

Esta consulta ilustra a filtragem de qualquer person de name "Smith", retornando informações de dois fragmentos aninhados - company e employee.

Exemplo de consulta

query {
  companyList(filter: {
    employees: {
      _match: {
        name: {
          _expressions: [
            {
              value: "Smith"
            }
          ]
        }
      }
    }
  }) {
    items {
      name
      ceo {
        name
        firstName
      }
      employees {
        name
        firstName
      }
    }
  }
}

Exemplo de resultados

{
  "data": {
    "companyList": {
      "items": [
        {
          "name": "NextStep Inc.",
          "ceo": {
            "name": "Jobs",
            "firstName": "Steve"
          },
          "employees": [
            {
              "name": "Smith",
              "firstName": "Joe"
            },
            {
              "name": "Lincoln",
              "firstName": "Abraham"
            }
          ]
        }
      ]
    }
  }
}

Exemplo de consulta para fragmentos de conteúdo aninhados - todas as empresas em que todos os funcionários ganharam o prêmio "Gamestar"

Esta consulta ilustra a filtragem entre três fragmentos aninhados - company, employee e award.

Exemplo de consulta

query {
  companyList(filter: {
    employees: {
      _apply: ALL
      _match: {
        awards: {
          _match: {
            id: {
              _expressions: [
                {
                  value: "GS"
                  _operator:EQUALS
                }
              ]
            }
          }
        }
      }
    }
  }) {
    items {
      name
      ceo {
        name
        firstName
      }
      employees {
        name
        firstName
        awards {
          id
          title
        }
      }
    }
  }
}

Exemplo de resultados

{
  "data": {
    "companyList": {
      "items": [
        {
          "name": "Little Pony, Inc.",
          "ceo": {
            "name": "Smith",
            "firstName": "Adam"
          },
          "employees": [
            {
              "name": "Croft",
              "firstName": "Lara",
              "awards": [
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            },
            {
              "name": "Slade",
              "firstName": "Cutter",
              "awards": [
                {
                  "id": "GB",
                  "title": "Gameblitz"
                },
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Exemplo de consulta para metadados - listar os metadados para prêmios denominados GB

Esta consulta ilustra a filtragem entre três fragmentos aninhados - company, employee e award.

Exemplo de consulta

query {
  awardList(filter: {
      id: {
        _expressions: [
          {
            value:"GB"
          }
        ]
    }
  }) {
    items {
      _metadata {
        stringMetadata {
          name,
          value
        }
      }
      id
      title
    }
  }
}

Exemplo de resultados

{
  "data": {
    "awardList": {
      "items": [
        {
          "_metadata": {
            "stringMetadata": [
              {
                "name": "title",
                "value": "Gameblitz Award"
              },
              {
                "name": "description",
                "value": ""
              }
            ]
          },
          "id": "GB",
          "title": "Gameblitz"
        }
      ]
    }
  }
}

Exemplo de consulta usando o projeto WKND

Esses exemplos de consultas são baseadas no projeto WKND. Isso tem:

  • Modelos de fragmentos de conteúdo disponíveis em:
    http://<hostname>:<port>/libs/dam/cfm/models/console/content/models.html/conf/wknd

  • Fragmentos de conteúdo (e outro conteúdo) disponíveis em:
    http://<hostname>:<port>/assets.html/content/dam/wknd/en

    http://<hostname>:<port>/assets.html/content/dam/wknd-shared/en

OBSERVAÇÃO

Como os resultados podem ser extensos, eles não são reproduzidos aqui.

Exemplo de consulta para todos os Fragmentos de conteúdo de um determinado modelo com as propriedades especificadas

Este exemplo de consulta interroga:

  • por todos os Fragmentos de conteúdo do tipo article
  • com o _path e as propriedades do authorFragment.

Exemplo de consulta

{
  articleList {
    items {
      _path
      authorFragment {
        _path
        firstName
        lastName
        birthDay
      }
    }
 }
}

Exemplo de consulta para metadados

Esta consulta interroga:

  • por todos os Fragmentos de conteúdo do tipo adventure
  • metadados

Exemplo de consulta

{
  adventureList {
    items {
      _path,
      _metadata {
        stringMetadata {
          name,
          value
        }
        stringArrayMetadata {
          name,
          value
        }
        intMetadata {
          name,
          value
        }
        intArrayMetadata {
          name,
          value
        }
        floatMetadata {
          name,
          value
        }
        floatArrayMetadata {
          name,
          value
        }
        booleanMetadata {
          name,
          value
        }
        booleanArrayMetadata {
          name,
          value
        }
        calendarMetadata {
          name,
          value
        }
        calendarArrayMetadata {
          name,
          value
        }
      }
    }
  }
}

Exemplo de consulta para um único Fragmento de conteúdo de um determinado modelo

Este exemplo de consulta interroga:

  • por um único Fragmento de conteúdo do tipo article em um caminho específico
    • dentro desse conteúdo, todos os formatos de conteúdo:
      • HTML
      • Markdown
      • Texto sem formatação
      • JSON

Exemplo de consulta

{
  articleByPath(_path: "/content/dam/wknd-shared/en/magazine/alaska-adventure/alaskan-adventures") {
    item {
        _path
        authorFragment {
          _path
          firstName
          lastName
          birthDay
        }
        main {
          html
          markdown
          plaintext
          json
        }
    }
  }
}

Exemplo de consulta para um modelo de fragmento de conteúdo a partir de um modelo

Este exemplo de consulta interroga:

  • por um único Fragmento de conteúdo
    • detalhes do modelo de Fragmento de conteúdo subjacente

Exemplo de consulta

{
  adventureByPath(_path: "/content/dam/wknd-shared/en/magazine/western-australia/western-australia-by-camper-van") {
    item {
      _path
      title
      _model {
        _path
        title
      }
    }
  }
}

Exemplo de consulta para um Fragmento de conteúdo aninhado - tipo de modelo único

Esta consulta interroga:

  • por um único Fragmento de conteúdo do tipo article em um caminho específico
    • dentro disso, o caminho e o autor do fragmento referenciado (aninhado)
OBSERVAÇÃO

O campo referencearticle tem o tipo de dados fragment-reference.

Exemplo de consulta

{
  adventureByPath(_path: "/content/dam/wknd-shared/en/magazine/western-australia/western-australia-by-camper-van") {
    item {
      _path
      title
      _model {
        _path
        title
      }
    }
  }
}

Exemplo de consulta para um Fragmento de conteúdo aninhado - tipo de modelo múltiplo

Tipo de modelo referenciado único

Esta consulta interroga:

  • por vários Fragmentos de conteúdo do tipo bookmark
    • com referências de fragmentos a outros fragmentos dos tipos de modelo específicos Article
OBSERVAÇÃO

O campo fragments tem o tipo de dados fragment-reference, com o modelo Article selecionado. A consulta fornece fragments como uma matriz de [Article].

{
  bookmarkList {
    items {
        fragments {
          _path
          author
        }
     }
  }
}

Vários tipos de modelo referenciados

Esta consulta interroga:

  • por vários Fragmentos de conteúdo do tipo bookmark
    • com Referências de fragmentos a outros fragmentos dos tipos de modelo específicos Article e Adventure
OBSERVAÇÃO

O campo fragments tem o tipo de dados fragment-reference, com os modelos Article e Adventure selecionados. A consulta entrega fragments como uma matriz de [AllFragmentModels], que é desreferenciada com o tipo de união.

{
  bookmarkList {
    items {
        fragments {
          ... on ArticleModel {
            _path
            author
          }
          ... on AdventureModel {
            _path
            adventureTitle
          }
        }
     }
  }
}

Exemplo de consulta para um Fragmento de conteúdo de um modelo específico com Referências de conteúdo

Há duas opções desta consulta:

  1. Para retornar todas as referências de conteúdo.
  2. Para retornar as referências de conteúdo específicas do tipo attachments.

Essas consultas interrogam:

  • por vários Fragmentos de conteúdo do tipo bookmark
    • com Referências de conteúdo a outros fragmentos

Exemplo de consulta para vários Fragmentos de conteúdo com Referências previamente buscadas

A consulta a seguir retorna todas as referências de conteúdo usando _references:

{
  bookmarkList {
     _references {
         ... on ImageRef {
          _path
          type
          height
        }
        ... on MultimediaRef {
          _path
          type
          size
        }
        ... on DocumentRef {
          _path
          type
          author
        }
        ... on ArchiveRef {
          _path
          type
          format
        }
    }
    items {
        _path
    }
  }
}

Exemplo de consulta para vários Fragmentos de conteúdo com anexos

A consulta a seguir retorna todos os attachments - um campo específico (subgrupo) de tipo content-reference:

OBSERVAÇÃO

O campo attachments tem o tipo de dados content-reference, com vários formulários selecionados.

{
  bookmarkList {
    items {
      attachments {
        ... on PageRef {
          _path
          type
        }
        ... on ImageRef {
          _path
          width
        }
        ... on MultimediaRef {
          _path
          size
        }
        ... on DocumentRef {
          _path
          author
        }
        ... on ArchiveRef {
          _path
          format
        }
      }
    }
  }
}

Exemplo de consulta para um único Fragmento de conteúdo com Referência em linha do RTE

Esta consulta interroga:

  • por um único Fragmento de conteúdo do tipo bookmark em um caminho específico
    • dentro disso, referências em linha do RTE
OBSERVAÇÃO

As referências em linha do RTE são hidratadas em _references.

Exemplo de consulta

{
  bookmarkByPath(_path: "/content/dam/wknd/en/bookmarks/skitouring") {
    item {
      _path
      description {
        json
      }
    }
    _references {
      ... on ArticleModel {
        _path
      }
      ... on AdventureModel {
        _path
      }
      ... on ImageRef {
        _path
      }
      ... on MultimediaRef {
        _path
      }
      ... on DocumentRef {
        _path
      }
      ... on ArchiveRef {
        _path
      }
    }
  }
}

Exemplo de consulta para uma única variação do Fragmento de conteúdo de um determinado modelo

Esta consulta interroga:

  • por um único Fragmento de conteúdo do tipo author em um caminho específico
    • dentro disso, os dados relativos à variação: another

Exemplo de consulta

{
  authorByPath(_path: "/content/dam/wknd-shared/en/contributors/ian-provo", variation: "another") {
    item {
        _path
        _variation
        firstName
        lastName
        birthDay
    }
  }
}

Exemplo de consulta para uma variação nomeada de vários Fragmentos de conteúdo de um determinado modelo

Esta consulta interroga:

  • por Fragmentos de conteúdo do tipo author com uma variação específica: another
OBSERVAÇÃO

Isso demonstrará o fallback dos fragmentos de conteúdo que não têm uma Variação do nome especificado.

Exemplo de consulta

{
  authorList(variation: "another") {
    items {
        _path
        _variation
        firstName
        lastName
        birthDay
    }
  }
}

Exemplo de consulta para vários Fragmentos de conteúdo de uma determinada localidade

Esta consulta interroga:

  • por Fragmentos de conteúdo do tipo article no local fr

Exemplo de consulta

{
  articleList(_locale: "fr") {
    items {
      _path
      authorFragment {
        _path
        firstName
        lastName
        birthDay
      }
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

Exemplo de consulta de lista usando deslocamento e limite

Esta consulta interroga:

  • para a página de resultados que contém até cinco artigos, a partir do quinto artigo da lista de resultados completa

Exemplo de consulta

{
   articleList(offset: 5, limit: 5) {
    items {
      authorFragment {
        _path
        firstName
        lastName
        birthDay
      }
      _path
    }
  }
}

Exemplo de consulta de paginação usando primeiro e depois

Esta consulta interroga:

  • para a página de resultados que contém até cinco aventuras, a partir do item de cursor especificado na lista de resultados completa

Exemplo de consulta

{
    adventurePaginated(first: 5, after: "ODg1MmMyMmEtZTAzMy00MTNjLThiMzMtZGQyMzY5ZTNjN2M1") {
        edges {
          cursor
          node {
            title
          }
        }
        pageInfo {
          endCursor
          hasNextPage
        }
    }
}

Exemplo de estrutura do fragmento de conteúdo (usada com GraphQL)

Os exemplos de consultas são baseados na seguinte estrutura, que usa:

Exemplos de Modelos de fragmento de conteúdo (esquemas)

Para o exemplo de consultas, usaremos os seguintes Modelos de conteúdo e suas interrelações (referências ->):

Empresa

Os campos básicos que definem a empresa são:

Nome do campo Tipo de dados Referência
Nome da empresa Texto em linha única
CEO Referência do fragmento (único) Pessoa
Empregados Referência do fragmento (vários campos) Pessoa

Pessoa

Os campos que definem uma pessoa, que também pode ser um funcionário:

Nome do campo Tipo de dados Referência
Nome Texto em linha única
Nome Texto em linha única
Prêmios Referência do fragmento (vários campos) Prêmio

Prêmio

Os campos que definem um prêmio são:

Nome do campo Tipo de dados Referência
Atalho/ID Texto em linha única
Título Texto em linha única

Cidade

Os campos para definir uma cidade são:

Nome do campo Tipo de dados Referência
Nome Texto em linha única
País Texto em linha única
População Número
Categorias Tags

Exemplos de Fragmentos de conteúdo

Os fragmentos a seguir são usados para o modelo apropriado.

Empresa

Nome da empresa CEO Empregados
Apple Steve Jobs Duke Marsh
Max Caulfield
Little Pony Inc. Adam Smith Lara Croft
Cutter Slade
NextStep Inc. Steve Jobs Joe Smith
Abe Lincoln

Pessoa

Nome Nome Prêmios
Lincoln Abe
Smith Adam
Slade Cutter Gameblitz
Gamestar
Marsh Duke
Smith Joe
Croft Lara Gamestar
Caulfield Max Gameblitz
Tarefas Steve

Prêmio

Atalho/ID Título
GB Gameblitz
GS Gamestar
OSC Oscar

Cidade

Nome País População Categorias
Basileia Suíça 172258 city:emea
Berlim Alemanha 3669491 city:capital
city:emea
Bucareste Romênia 1821000 city:capital
city:emea
São Francisco EUA 883306 city:beach
city:na
San Jose EUA 102635 city:na
Stuttgart Alemanha 634830 city:emea
Zurique Suíça 415367 city:capital
city:emea

Nesta página