如何通过AEM交付API访问您的内容

AEM Headless开发人员历程, 您可以了解如何使用GraphQL查询访问内容片段的内容并将其馈送到您的应用程序(无头交付)。

迄今为止的故事

在AEM无头历程的上一个文档中, 如何对内容进行建模 您学习了AEM中内容建模的基础知识,因此现在应该了解如何对内容结构进行建模,然后使用AEM内容片段模型和内容片段来实现该结构:

  • 识别与内容建模相关的概念和术语。
  • 了解为何需要内容建模才能交付无头内容。
  • 了解如何使用AEM内容片段模型(以及包含内容片段的创作内容)实现此结构。
  • 了解如何对内容进行建模;原则和基本样本。

本文基于这些基础知识,以便您了解如何使用AEM GraphQL API在AEM中访问现有的无标题内容。

  • 受众:初学者
  • 目标:了解如何使用AEM GraphQL查询访问内容片段的内容:
    • 引入GraphQL和AEM GraphQL API。
    • 深入了解AEM GraphQL API的详细信息。
    • 请查看一些示例查询,以了解实际操作方式。

您想访问您的内容吗?

所以……您拥有所有这些内容,其结构清晰(位于内容片段中),只需等待您的新应用程序提供信息。 问题是,如何实现它?

您需要一种方法来定位特定内容,选择您需要的内容,并将其返回给应用程序以进行进一步处理。

借助Adobe Experience Manager(AEM),您可以使用AEM GraphQL API有选择地访问内容片段,以仅返回所需的内容。 这意味着您可以实现结构化内容的无头交付,以供在应用程序中使用。

注意

AEM GraphQL API是一种基于标准GraphQL API规范的自定义实施。

GraphQL — 简介

GraphQL是一种开源规范,它提供:

  • 一种查询语言,用于从结构化对象中选择特定内容。
  • 用于对结构化内容执行这些查询的运行时。

GraphQL是 强烈 键入的API。 这意味着 全部 必须按类型清晰地构建和组织内容,以便GraphQL 理解 访问内容和操作方式。 数据字段在GraphQL架构中定义,该架构用于定义内容对象的结构。

然后,GraphQL端点提供响应GraphQL查询的路径。

所有这些都意味着您的应用程序能够准确、可靠、高效地选择所需的内容 — 这正是您与AEM一起使用时需要的内容。

注意

请参阅 GraphQL.org和 GraphQL.com。

AEM GraphQL API

AEM GraphQL API是基于标准GraphQL API规范的自定义版本,专门配置为允许您对内容片段执行(复杂)查询。

由于内容是根据内容片段模型构建的,因此会使用内容片段。 这满足了GraphQL的基本要求。

  • 内容片段模型由一个或多个字段组成。
    • 根据数据类型定义每个字段。
  • 内容片段模型用于生成相应的AEM GraphQL架构。

要实际访问AEM的GraphQL(和内容),可使用端点提供访问路径。

通过AEM GraphQL API返回的内容随后可供应用程序使用。

为了帮助您直接输入和测试查询,标准GraphiQL界面的实施还可与AEM GraphQL一起使用(这可以与AEM一起安装)。 它提供了语法突出显示、自动完成、自动建议等功能,以及历史记录和在线文档。

注意

AEM GraphQL API实施基于GraphQL Java库。

用于AEM GraphQL API的内容片段

内容片段可用作AEM架构和查询的GraphQL的基础,如下所示:

  • 它们使您能够设计、创建、策划和发布可无缝交付的独立于页面的内容。
  • 它们基于内容片段模型,内容片段模型使用一系列数据类型预先定义结果片段的结构。
  • 可使用定义模型时可用的片段引用数据类型实现其他结构层。

内容片段模型

以下内容片段模型:

  • 用于生成架构一次 已启用.
  • 提供GraphQL所需的数据类型和字段。 它们确保您的应用程序仅请求可能的内容,并接收预期内容。
  • 数据类型 片段引用 可在模型中使用来引用其他内容片段,因此可引入其他级别的结构。

片段引用

片段引用:

  • 是在定义内容片段模型时可用的特定数据类型。

  • 引用另一个片段,具体取决于特定的内容片段模型。

  • 允许您创建并检索结构化数据。

    • 定义为 多源,则主片段可以引用(检索)多个子片段。

JSON预览

为帮助设计和开发内容片段模型,您可以在内容片段编辑器中预览JSON输出。

JSON预览

实际使用AEM GraphQL API

初始设置

在开始查询内容之前,您需要:

示例结构

要在查询中实际使用AEM GraphQL API,我们可以使用两个非常基本的内容片段模型结构:

  • 公司
    • 名称 — 文本
    • 首席执行官(人员) — 片段参考
    • 员工(人员) — 片段参考
  • 人员
    • 名称 — 文本
    • 名字 — 文本

如您所见,CEO和Employees字段引用“人员”片段。

将使用片段模型:

  • 在内容片段编辑器中创建内容时
  • 生成要查询的GraphQL架构

在何处测试查询

查询可以在GraphiQL界面中输入,例如:

  • http://localhost:4502/content/graphiql.html

GraphiQL接口

查询入门

简单的查询是返回公司架构中所有条目的名称。 在此,您需要列出所有公司名称:

query {
  companyList {
    items {
      name
    }
  }
}

更复杂的查询是选择所有没有“Jobs”名称的人员。 这将过滤所有名称不为Jobs的人员。 这是通过EQUALS_NOT运算符实现的(还有更多):

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

您还可以构建更复杂的查询。 例如,查询至少拥有一名员工且其名称为“Smith”的所有公司。 此查询说明了对名为“Smith”的任意人员的筛选,以及从嵌套片段返回的信息:

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

有关使用AEM GraphQL API以及配置必需元素的完整详细信息,可以引用:

  • 了解如何将GraphQL与AEM结合使用
  • 示例内容片段结构
  • 了解如何将GraphQL与AEM结合使用 — 示例内容和查询

下一步

现在,您已了解如何使用AEM GraphQL API访问和查询无头内容,您现在可以 了解如何使用REST API访问和更新内容片段的内容.

其他资源

在此页面上