はじめに
この記事は、以下の記事の続きです
Oracle Content Management (以降OCM) はGraphQLをサポートし、OCM内で管理するアセットの情報を取得できます
今回、これまでの記事で紹介しきれなかった内容も含め、OCMにおけるGraphQLの利用方法をついて紹介します。記事中のUpdate!と書かれたところが、今回新たに紹介する内容になります
0. 準備
こちらの記事を参考に、OCMインスタンスを準備し、アセットを登録・公開します
1. GraphQLで公開済アセット情報を取得する
OCMにはGraphQL IDEが組み込まれており、これを利用してGraphQLの動作を確認できます。公開済アセットの情報を取得する際のURLは以下の通りです
エンドポイント
https://<OCMインスタンスのURL>/content/published/api/v1.1/graphql
GraphQL IDE
https://<OCMインスタンスのURL>/content/published/api/v1.1/graphql/explorer
GraphQL IDEのURLにアクセスすると、このような画面が表示されます。
汎用的に使える公開済アセット情報取得の問い合わせ
指定した公開済アセット1件の情報を取得するgetItem()
getItem()
を利用し、指定した公開済アセットの情報を取得できます。問い合わせパラメータには、公開チャネルのchannelToken(チャネルトークン)とid(アセットID)もしくはslug(スラグ)を指定します。ここではチャネルトークンとアセットIDを指定した例を紹介します
{
getItem(
id:"<アセットID>",
channelToken:"<チャネルトークン>")
{
id
name
slug
description
}
}
指定した条件に合致した複数の公開済アセットの情報を取得するgetItems()
getItems()
を利用し、指定した条件に合致した複数の公開済アセットの情報を取得できます。問い合わせパラメータには、公開チャネルのチャネルトークンやフィルタ条件などを指定します。ここでは公開チャネルのチャネルトークンと、アセットタイプ=sampleNewsType
のフィルタ条件を指定した例を紹介します
{
getItems(channelToken:"<チャネルトークン>",
filter:{type:{op: EQUALS, value:"sampleNewsType"}})
{
totalResults
items
{
id
name
slug
description
}
}
}
アセットタイプを指定した公開済アセット情報取得の問い合わせ
OCMはアセットにアクセスするための問合せを自動的に生成します。例えば、アセットタイプ=sampleNewsTypeの公開済アセット情報を取得する場合は、getSampleNewsType(...)
やgetSampleNewsTypeCollection(...)
が作成されます。それぞれの使い方は以下の通りです
特定のアセットタイプの公開済アセット1件の情報を取得するget<アセットタイプ名>()
getSampleNewsType()
を利用し、アセットタイプ=sampleNewsTypeの公開済アセットを取得できます。ここではチャネルトークンと slug(スラグ) を指定した例を紹介します
{
getSampleNewsType(
slug: "<アセットのスラグ>",
channelToken:"<チャネルトークン>")
{
id
name
fields
{
title
body
image{
id
name
fields{
file
{
url
}
}
}
}
}
}
特定のアセットタイプの複数アセットの情報を取得するget<アセットタイプ名>Collection()
Update!
getSampleNewsTypeCollection()
を利用し、アセットタイプ=sampleNewsTypeの公開済アセットを複数件取得できます。ここではチャネルトークンとアセット名(name)による降順ソート(DESC) を指定した例を紹介します
{
getSampleNewsTypeCollection(
channelToken:"<チャネルトークン>",
sort:{name:DESC})
{
totalResults
items
{
id
name
fields
{
title
body
image{
name
fields{
file{
url
}
}
}
}
}
}
}
2. GraphQLで未公開アセット情報を取得する Update!
OCMでは公開前のアセット(ドラフト、レビュー中などのステータスのアセット)のGraphQL問い合わせ「GraphQLコンテンツ・プレビュー」もサポートします。これを利用し、公開前の最新バージョンのアセットをプレビューする際に利用できます
GraphQLコンテンツプレビューのエンドポイント、及びGraphQL IDEのURLは以下の通りです
エンドポイント
https://<OCMインスタンスのURL>/content/preview/api/v1.1/graphql
GraphQL IDE
https://<OCMインスタンスのURL>/content/preview/api/v1.1/graphql/explorer
公開済アセットを取得する際の /content/published が /content/preview に変更されます
GraphQLコンテンツプレビューをIDEで確認する
コンテンツアイテムを1件新規作成し、公開チャネルに割り当てます。ここではsampleNewsTypeのコンテンツアイテムsample news content 003
を1件作成し、sampleChannelに割り当てます
なお、作成したコンテンツアイテムsample news content 003
は未公開(ドラフトステータス)のままとします
プレビュー用のGraphQL IDEをブラウザで開き、getSampleNewsTypeCollection
を実行します。前の手順で作成したドラフトステータスのコンテンツアイテムsample news content 003
が取得できます(公開済アセット2件+未公開アセット1件の合計3件のアセット情報を取得)
{
getSampleNewsTypeCollection(
channelToken:"<チャネルトークン>",
sort:{name:DESC})
{
totalResults
items
{
id
name
fields
{
title
body
}
}
}
}
公開済アセットを取得するGraphQL IDEを開き、同じ条件でgetSampleNewsTypeCollection
を実行します。今回はドラフトステータスのコンテンツアイテムsample news content 003
は取得されません(公開済アセットの2件のみ取得)
3. おわりに
この記事ではOCMのGraphQLの利用方法について紹介しました。「GraphQLコンテンツ・プレビュー」を利用することで、公開前のアセット情報もGraphQLで取得することができます。検証環境などで公開前のアセットをプレビューする場合などでの利用が想定されますので、機会がありましたら是非ご活用ください