如何通过 AEM 交付 API 访问您的内容 access-your-content
在 AEM Headless 开发人员历程的这部分中,您可以了解如何使用 GraphQL 查询访问内容片段的内容并将其提供给您的应用程序(Headless 交付)。
迄今为止的故事 story-so-far
在 AEM Headless 历程的上一文档如何为内容建模中,您已学习 AEM 中内容建模的基础知识,因此,您现在应了解如何为您的内容结构建模,然后使用 AEM 内容片段模型和内容片段实施该结构:
- 了解与内容建模相关的概念和术语。
- 了解为什么需要进行内容建模才能进行 Headless 内容交付。
- 了解如何使用 AEM 内容片段模型实施此结构(以及使用内容片段创作内容)。
- 了解如何为内容建模;带基本示例的准则。
本文基于这些基础知识编写,以便您了解如何使用 AEM GraphQL API 访问 AEM 中现有的 Headless 内容。
-
受众:初学者
-
目标:了解如何使用 AEM GraphQL 查询来访问内容片段的内容:
- 介绍 GraphQL 和 AEM GraphQL API。
- 深入了解 AEM GraphQL API 的详细信息。
- 查看一些示例查询以实际工作原理。
您想访问您的内容? so-youd-like-to-access-your-content
那么…您已获得所有这些结构整齐的内容(在内容片段中),并且正等待为您的新应用程序提供信息。问题是如何做到这一点?
您需要通过一种方式来定位特定的内容,选择所需内容并将其返回到您的应用程序以供进一步处理。
借助 Adobe Experience Manager (AEM) as a Cloud Service,您可以使用 AEM GraphQL API 选择性地访问您的内容片段以仅返回您需要的内容。这意味着您可以实施结构化内容的 Headless 交付以便在您的应用程序中使用。
GraphQL – 简介 graphql-introduction
GraphQL 是一种开源规范,它提供:
- 一种查询语言,可让您从结构化对象中选择特定内容。
- 一个运行库,用于使用结构化内容实施这些查询。
GraphQL 是一个强类型 API。这意味着,所有 内容必须按类型清晰地编排和组织,以便 GraphQL 能够 理解 访问内容和访问方式。数据字段将在 GraphQL 架构中定义,该架构定义了内容对象的结构。
之后,GraphQL 端点提供响应 GraphQL 查询的路径。
所有这一切意味着,您的应用程序可以准确、可靠和高效地选择它需要的内容(仅在与 AEM 结合使用时需要的内容)。
AEM GraphQL API aem-graphql-api
AEM GraphQL API 是基于标准 GraphQL API 规范的自定义版本,经过专门配置以允许您对内容片段执行(复杂)查询。
使用内容片段,因为内容是根据内容片段模型构建的。这将满足 GraphQL 的基本要求。
- 内容片段模型由一个或多个字段构成。
- 根据数据类型定义每个字段。
- 内容片段模型用于生成相应的 AEM GraphQL 架构。
为了实际访问 GraphQL for AEM(和内容),可使用端点提供访问路径。
然后,您的应用程序可以使用通过 AEM GraphQL API 返回的内容。
为了帮助您直接输入和测试查询,标准 GraphiQL 接口的实施也可用于 AEM GraphQL(这可以与 AEM 一起安装)。它提供了诸如语法突出显示、自动完成、自动建议等功能,以及历史记录和在线文档。
用于 AEM GraphQL API 的内容片段 content-fragments-use-with-aem-graphql-api
内容片段可作为 GraphQL for AEM 架构和查询的基础,如下所示:
- 它们允许您设计、创建、组织和发布独立于页面的内容,可以 Headless 方式交付这些内容。
- 它们基于内容片段模型,该模型使用一系列数据类型预定义了结果片段的结构。
- 可使用定义模型时提供的片段引用数据类型来实现额外的结构层。
内容片段模型 content-fragments-models
这些内容片段模型:
- 一旦 启用,用于生成架构。
- 提供 GraphQL 所需的数据类型和字段。它们确保您的应用程序仅请求可能的内容,并接收预期内容。
- 数据类型 片段引用 可在模型中使用来引用其他内容片段,因此可引入其他级别的结构。
片段引用 fragment-references
片段引用:
-
是可在定义内容片段模型时可用的特定数据类型。
-
引用另一个片段,具体取决于特定的内容片段模型。
-
让您依次创建和检索结构化数据。
- 定义为 多源,则主片段可以引用(检索)多个子片段。
JSON 预览 json-preview
要帮助设计和开发内容片段模型,您可以在内容片段编辑器中预览 JSON 输出。
实际使用 AEM GraphQL API actually-using-aem-graphiql
初始设置 initial-setup
在开始查询您的内容之前,您需要:
-
启用端点
- 使用“工具” > “常规” > “GraphQL”
- 启用 GraphQL 端点
- 这也将启用 GraphiQL IDE。
示例结构 sample-structure
要在查询中实际使用 AEM GraphQL API,我们可以使用两个非常基本的内容片段模型结构:
-
公司
- 姓名 - 文本
- CEO(人员)– 片段引用
- 员工(人员)– 片段引用
-
人员
- 姓名 – 文本
- 名字 – 文本
如您所见,“CEO”和“员工”字段引用“人员”片段。
使用片段模型:
- 在内容片段编辑器中创建内容时
- 生成您将查询的 GraphQL 架构
用于测试查询的位置 where-to-test-your-queries
可以在 GraphiQL 接口中输入查询。您可以通过以下任一方式访问查询编辑器:
- 工具 > 常规 > GraphQL 查询编辑器
- 直接;例如,
http://localhost:4502/aem/graphiql.html
查询快速入门 getting-Started-with-queries
直接查询用于返回“公司”架构中所有条目的名称。可在此处请求所有公司名称的列表:
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 结合使用 – 示例内容和查询
后续内容 whats-next
现在您已了解如何使用 AEM GraphQL API 访问和查询 Headless 内容,您现在可以了解如何使用 REST API 访问和更新内容片段的内容。
其他资源 additional-resources
-
AEM Headless 快速入门 - 一个简短的视频教程系列,概述了如何使用 AEM 的 Headless 功能,包括内容建模和 GraphQL。