通过Oracle Cloud的GraphQL,获取Oracle Content Management的数据

首先

Oracle Content Management(以下OCMと呼ぶ)は、云原生的内容管理平台。通过提供强大的协作、工作流管理、机器学习自动标记和创作推荐,实现缩短内容创作时间、降低搜索成本和加强企业治理。开发者可以使用即可用的模板快速构建内容丰富的网站,也可以将内容提供给现有的Web、移动、数字助理渠道和企业应用,以提供与营销活动相关的高度相关的客户体验。

本文将介绍如何使用GraphQL获取Oracle内容管理系统中的数据。

本文基于2021年8月最新版本(21.7.1)创作。
从21.6.1版本开始,服务名称由Oracle Content and Experience(OCE)更改为Oracle Content Management(OCM)。

GraphQL是一种查询语言。

在Qiita上有很多有用的文章,我在这里挑选了两篇,请先确认一下。

GraphQL是一种用于WEB API的查询语言,它是一个运行时(在执行时需要的东西),用于执行查询(获取数据的指令)来访问现有数据。
与REST API不同,GraphQL只有一个端点,不需要为每个处理操作增加新的端点,因此更易于管理,这是它的主要特点。

以下是一种本土化的中文释义:

这是API的一种“模式”。

这是Facebook在2015年发布的相对较新的API模式。

其特点包括:

只有一个端点
可以对交互数据进行类型检查
支持实时通信

请同时查看GraphQL的官方网站。

1. 准备好

在事前准备阶段,需要创建OCM实例、定义资产存储库以及注册和发布资产。请参考以下教程进行准备。

    1. 创建Oracle Content and Experience实例

 

    尝试使用Oracle Content and Experience作为无界面内容管理系统【初级指南】

另外,GraphQL也可在Oracle Content Management- Starter Edition中使用。创建Starter Edition环境,请参考以下的文章。

请确认GraphQL的模式

在中国,OCM支持所有公开的内容和所有资产类型的GraphQL。开发人员可以查看架构,创建查询,并从客户端调用它与其他交付API一起使用。

OCM包含了GraphQL IDE。URL如下所示。

https://<OCMインスタンスのURL>/content/published/api/v1.1/graphql/explorer
image.png

点击右上角的<Docs>会显示文档浏览器。从这里,您可以搜索资产类型并查看模式。

image.png

用GraphQL试试看。

使用GraphQL来获取数据。可以通过GraphQL获取的数据是已经注册在OCM资产存储库中的公开资产。不符合此条件的资产(例如:未公开的资产)无法通过GraphQL获取。

确认可以使用sampleNewsType获取的数据

我们将使用在“使用Oracle Content and Experience作为Headless CMS【初级教程】”中创建的sampleNewsType内容类型。

image.png

3.2 通过 GraphQL 获取数据

使用getSampleNewsType查询,我们将获取之前步骤中确认的模式定义(sampleNewsType)的数据。在使用GraphQL获取数据时,需要获取资产的id(或slug)和公开频道的频道令牌(channelToken)。

3.2.1 确认资产ID和频道令牌。

打开OCE的WebUI,查看已发布内容项sample news content 001的资产ID和已发布的sampleChannel的频道令牌。

image.png

使用GraphQL获取数据

通过使用资产ID和通道令牌,获取sampleNewsType的数据。获取时使用的查询是getSampleNewsType()。执行示例如下:

{
  getSampleNewsType
  (
    id: "CORE5FD129FC39DD4F3097FC1223469BD7A7",
    channelToken: "1baae0944c004a7b90f203f962b6453e")
  {
    id
    name
    slug
  }
}
image.png
image.png

获取包含属性信息的数据。

获取 sampleNewsType 的属性信息。在获取属性信息时,将希望获取的属性添加到 fields 中。在这里,我们添加 title 和 body 到 fields 中。

{
  getSampleNewsType
  (
    id: "CORE5FD129FC39DD4F3097FC1223469BD7A7",
    channelToken: "1baae0944c004a7b90f203f962b6453e") 
  {
    id
    name
    slug
    fields
    {
      title
      body
    }
  }
}
image.png

获得包含参照资产(图像资产)的属性信息。

sampleNewsType的image属性是指向注册为数字资产类型为Image的数字资产。在这里,我们将解释如何通过一次查询获取参考资产的数据。

如果想要获取与图像属性中注册的数字资产的链接,请按照以下方式指定。

{
  getSampleNewsType
  (
    id: "CORE5FD129FC39DD4F3097FC1223469BD7A7",
    channelToken: "1baae0944c004a7b90f203f962b6453e") 
  {
    id
    name
    slug
    fields
    {
      title
      body
      image
      {
        id
        name
        fields
        {
          file
          {
            url
          }
        }
      }
    }
  }
}
image.png
image.png

获取包含图像资产渲染的属性信息。

当您将JPEG等图片文件注册到OCM存储库时,将自动生成Large/Medium/Small/Thumbnail的渲染版本。
要获取特定数字资产的渲染版本(此处为缩略图),请按以下方式执行。

{
  getSampleNewsType
  (
    id: "CORE5FD129FC39DD4F3097FC1223469BD7A7",
    channelToken: "1baae0944c004a7b90f203f962b6453e") 
  {
    id
    name
    slug
    fields
    {
      title
      body
      image
      {
        id
        name
        fields
        {
          rendition(name:"Thumbnail", format:"jpg")
          {
            file
            {
              url
            }
          }
        }
      }
    }
  }
}
image.png

4. 总结

在这篇文章中,我们介绍了如何使用GraphQL获取Oracle内容管理的数据。我们确认了只需要获取所需数据的简单性。

另外,在下面的产品文档中有详细说明。希望您能确认一下。

    GraphQL Support in Oracle Content Management

(参考)OCM的产品文档

    • Oracle Content Management 製品ドキュメント(英語)

Oracle Content Management 製品ドキュメント(日本語翻訳版)
製品ドキュメントの英語原本と日本語翻訳版です。翻訳されるまでに時差がありますので、最新情報の確認は 英語版のドキュメントをご利用ください

广告
将在 10 秒后关闭
bannerAds