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

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

Para começar a usar consultas do GraphQL e saber como elas funcionam com Fragmentos de conteúdo AEM, seria de ajuda ver 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 da sua instância, você pode acessar diretamente a variável Interface GraphiQL incluída com a API AEM GraphQL para enviar e testar consultas.

Por exemplo: http://localhost:4502/content/graphiql.html

OBSERVAÇÃO

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

Este exemplo de consulta retorna todas as 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 a consulta básica:
Exemplo de consulta

{
  cityList {
    items
  }
}

Quando executado, o sistema expande 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

Este exemplo de consulta é uma consulta simples para retornar o namede todas as entradas no cityesquema.

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

Este exemplo de consulta é 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 variação chamada "Centro de Berlim" (berlin_centre), para o city Berlim, você pode usar 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 - Nomes de todas as cidades Marcado como Quebras de cidade

Se você:

  • criar várias tags, chamadas Tourism : Business, City Break, Holiday
  • e atribuir essas tags à variação Principal de vários City instâncias

Em seguida, você pode usar uma consulta para retornar detalhes do name e tagsde todas as entradas marcadas como Quebras de cidade na variável cityesquema.

Exemplo de consulta

query {
  cityList(
    includeVariations: true,
    filter: {_tags: {_expressions: [{value: "tourism:city-break", _operator: CONTAINS}]}}
  ){
    items {
      name,
      _tags
    }
  }
}

Exemplo de resultados

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "Berlin",
          "_tags": [
            "tourism:city-break",
            "tourism:business"
          ]
        },
        {
          "name": "Zurich",
          "_tags": [
            "tourism:city-break",
            "tourism:business"
          ]
        }
      ]
    }
  }
}

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"

Este exemplo de consulta filtra tudo persons para qualquer uma que tenha o nome Jobsou 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"

Este exemplo de consulta filtra tudo persons para qualquer uma que tenha o nome Jobsou 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 na Alemanha ou na Suíça com população de 400.000 a 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. Ele tem o seguinte:

  • 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

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 as propriedades path e author.

Exemplo de consulta

{
  articleList {
    items {
      _path
      author
    }
  }
}

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
    • nesse caminho, todos os formatos de conteúdo:
      • HTML
      • Markdown
      • Texto sem formatação
      • JSON

Exemplo de consulta

{
  articleByPath (_path: "/content/dam/wknd/en/magazine/alaska-adventure/alaskan-adventures") {
    item {
        _path
        author
        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/en/adventures/riverside-camping-australia/riverside-camping-australia") {
    item {
      _path
      adventureTitle
      _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
    • nesse caminho, 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 do tipo de modelo específico Article
OBSERVAÇÃO

O campo fragments tem o tipo de dados fragment-reference, com o modelo Article selecionado. Entrega da consulta 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. Entrega da consulta fragments como uma matriz de [AllFragmentModels], que é desreferenciado 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 todas as 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 article em um caminho específico
    • nesse caminho, os dados relacionados à variação: variation1

Exemplo de consulta

{
  articleByPath (_path: "/content/dam/wknd/en/magazine/alaska-adventure/alaskan-adventures", variation: "variation1") {
    item {
      _path
      author
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

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 article com uma variação específica: variation1

Exemplo de consulta

{
  articleList (variation: "variation1") {
    items {
      _path
      author
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

Exemplo de consulta para vários Fragmentos de conteúdo e suas Variações de um determinado modelo

Esta consulta interroga:

  • por Fragmentos de conteúdo do tipo article e todas as variações

Exemplo de consulta

query {
  articleList(
    includeVariations: true  ){
    items {
      _variation
      _path
      _tags
      _metadata {
        stringArrayMetadata {
          name
          value
        }
      }
    }
  }
}

Exemplo de consulta para variações de fragmento de conteúdo de um determinado modelo que tem uma tag específica anexada

Esta consulta interroga:

  • por Fragmentos de conteúdo do tipo article com uma ou mais variações com a tag WKND : Activity / Hiking

Exemplo de consulta

{
  articleList(
    includeVariations: true,
    filter: {_tags: {_expressions: [{value: "wknd:activity/hiking", _operator: CONTAINS}]}}
  ){
    items {
      _variation
      _path
      _tags
      _metadata {
        stringArrayMetadata {
          name
          value
        }
      }
    }
  }
}

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
      author
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

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, use 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
Jobs 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