在 AEM Headless开发人员历程, 您可以了解如何使用GraphQL查询访问内容片段的内容并将其馈送到您的应用程序(无头交付)。
该功能的部分功能在预发布渠道中提供。特别是与持久查询相关的功能。
有关如何为您的环境启用该功能的信息,请参阅预发布渠道文档。
在AEM无头历程的上一个文档中, 如何对内容进行建模 您学习了AEM中内容建模的基础知识,因此现在应该了解如何对内容结构进行建模,然后使用AEM内容片段模型和内容片段来实现该结构:
本文基于这些基础知识,以便您了解如何使用AEM GraphQL API在AEM中访问现有的无标题内容。
所以……您拥有所有这些内容,其结构清晰(位于内容片段中),只需等待您的新应用程序提供信息。 问题是,如何实现它?
您需要一种方法来定位特定内容,选择您需要的内容,并将其返回给应用程序以进行进一步处理。
借助Adobe Experience Manager(AEM)as a Cloud Service,您可以使用AEM GraphQL API有选择地访问内容片段,以仅返回所需的内容。 这意味着您可以实现结构化内容的无头交付,以供在应用程序中使用。
AEM GraphQL API是一种基于标准GraphQL API规范的自定义实施。
GraphQL是一种开源规范,它提供:
GraphQL是 强烈 键入的API。 这意味着 全部 必须按类型清晰地构建和组织内容,以便GraphQL 理解 访问内容和操作方式。 数据字段在GraphQL架构中定义,该架构用于定义内容对象的结构。
然后,GraphQL端点提供响应GraphQL查询的路径。
所有这些都意味着您的应用程序能够准确、可靠、高效地选择所需的内容 — 这正是您与AEM一起使用时需要的内容。
请参阅 GraphQL.org和 GraphQL.com。
AEM GraphQL API是基于标准GraphQL API规范的自定义版本,专门配置为允许您对内容片段执行(复杂)查询。
由于内容是根据内容片段模型构建的,因此会使用内容片段。 这满足了GraphQL的基本要求。
要实际访问AEM的GraphQL(和内容),可使用端点提供访问路径。
通过AEM GraphQL API返回的内容随后可供应用程序使用。
为了帮助您直接输入和测试查询,标准GraphiQL界面的实施还可与AEM GraphQL一起使用(这可以与AEM一起安装)。 它提供了语法突出显示、自动完成、自动建议等功能,以及历史记录和在线文档。
AEM GraphQL API实施基于GraphQL Java库。
内容片段可用作AEM架构和查询的GraphQL的基础,如下所示:
以下内容片段模型:
的 片段引用:
是在定义内容片段模型时可用的特定数据类型。
引用另一个片段,具体取决于特定的内容片段模型。
允许您创建并检索结构化数据。
为帮助设计和开发内容片段模型,您可以在内容片段编辑器中预览JSON输出。
在开始查询内容之前,您需要:
启用您的端点
安装GraphiQL(如果需要)
要在查询中实际使用AEM GraphQL API,我们可以使用两个非常基本的内容片段模型结构:
如您所见,CEO和Employees字段引用“人员”片段。
将使用片段模型:
查询可以在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访问和查询无头内容,您现在可以 了解如何使用REST API访问和更新内容片段的内容.