在 AEM Headless 开发人员历程的这部分中,您可以了解如何使用 GraphQL 查询访问内容片段的内容并将其提供给您的应用程序(Headless 交付)。
在 AEM Headless 历程的上一文档如何为内容建模中,您已学习 AEM 中内容建模的基础知识,因此,您现在应了解如何为您的内容结构建模,然后使用 AEM 内容片段模型和内容片段实施该结构:
本文基于这些基础知识编写,以便您了解如何使用 AEM GraphQL API 访问 AEM 中现有的 Headless 内容。
那么…您已获得所有这些结构整齐的内容(在内容片段中),并正等待为您的新应用程序提供信息。问题是如何做到这一点?
您需要通过一种方式来定位特定的内容,选择所需内容并将其返回到您的应用程序以供进一步处理。
借助 Adobe Experience Manager (AEM) as a Cloud Service,您可以使用 AEM GraphQL API 选择性地访问您的内容片段以仅返回您需要的内容。这意味着您可以实施结构化内容的 Headless 交付以便在您的应用程序中使用。
AEM GraphQL API 是基于标准 GraphQL API 规范的自定义实施。
GraphQL 是一种开源规范,它提供:
GraphQL 是一个强类型 API。这意味着,所有内容必须按类型清晰地编排和组织,以便 GraphQL 能够理解访问内容和访问方式。数据字段将在 GraphQL 架构中定义,该架构定义了内容对象的结构。
之后,GraphQL 端点提供响应 GraphQL 查询的路径。
所有这一切意味着,您的应用程序可以准确、可靠和高效地选择它需要的内容(仅在与 AEM 结合使用时需要的内容)。
请参阅 GraphQL.org 和 GraphQL.com。
AEM GraphQL API 是基于标准 GraphQL API 规范的自定义版本,经过专门配置以允许您对内容片段执行(复杂)查询。
使用内容片段,因为内容是根据内容片段模型构建的。这将满足 GraphQL 的基本要求。
为了实际访问 GraphQL for AEM(和内容),可使用端点提供访问路径。
然后,您的应用程序可以使用通过 AEM GraphQL API 返回的内容。
为了帮助您直接输入和测试查询,标准 GraphiQL 接口的实施也可用于 AEM GraphQL(这可以与 AEM 一起安装)。它提供了诸如语法突出显示、自动完成、自动建议等功能,以及历史记录和在线文档。
AEM GraphQL API 实施基于 GraphQL Java 库。
内容片段可作为 GraphQL for AEM 架构和查询的基础,如下所示:
这些内容片段模型:
片段引用:
是可在定义内容片段模型时可用的特定数据类型。
引用另一个片段,具体取决于特定的内容片段模型。
允许您依次创建和检索结构化数据。
要帮助设计和开发内容片段模型,您可以在内容片段编辑器中预览 JSON 输出。
在开始查询您的内容之前,您需要:
要在查询中实际使用 AEM GraphQL API,我们可以使用两个非常基本的内容片段模型结构:
如您所见,“CEO”和“员工”字段引用“人员”片段。
将使用片段模型:
可以在 GraphiQL 接口中输入查询。您可以通过以下任一方式访问查询编辑器:
http://localhost:4502/aem/graphiql.html
直接查询用于返回“公司”架构中所有条目的名称。可在此处请求所有公司名称的列表:
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 以及配置必要元素的完整详细信息,您可以引用:
现在您已了解如何使用 AEM GraphQL API 访问和查询 Headless 内容,您现在可以了解如何使用 REST API 访问和更新内容片段的内容。