初のCraftCMS案件を振り返る その6

この記事はCraft CMS Advent Calendar 2020 - Adventarに乗り遅れた記事です。
前回の初のCraftCMS案件を振り返る その5 \| Blog \| riatw.meの続編です。

今回取り上げるのは「API連携の柔軟性」についてです。

CraftCMSにはAPIの仕組みとして「GraphQL」が標準機能として搭載されています。 このAPIを使うことでCraftCMSに対してデータの追加・変更・削除を行うことが可能です。

従来の「REST API」もプラグインで提供されています。

GraphQLとは

Wikipediaによると「GraphQL(グラフQL)はAPI向けに作られたクエリ言語およびランタイムである」とのことです。

私自身、CraftCMSではじめて触ったので全体の1割も理解していませんが、使ってみた感じだとREST APIに比べると1回のリクエストで複数のオブジェクトのデータを一度に取得できる点とレスポンスの形式を柔軟に調整できる点が優れていると感じました。

GraphQLクエリと呼ばれる独自の記法に慣れる必要はありますが、慣れると使い勝手はかなり良さそうです。

GraphQL API

CraftCMSのGraphQL APIの使い方については公式のドキュメントが分かりやすいです。

REST APIではオブジェクトごとにエンドポイントが決まっており、そこにリクエストを 送ることでデータの取得が行えましたが、GraphQLの場合は固定のエンドポイントに GraphQLクエリを送ることでデータの取得が行なえます。

CraftCMSの管理画面からGraphQLを有効にすると実際に管理画面からGraphQL APIを 実行する画面が現れるので、そちらでドキュメントを参考にGraphQLクエリを実行して 動作テストすることが可能です。

実際には他システム等との連携に使用されると思いますので、その際は上記の方法で 目的のGrafQLクエリの動作テストまで行っておいた上で、各プログラミング言語で、 実装を試みることになります。

PHPで実装した際にはデータ取得部分でcURLを使用しましたが、その際のContext-Typeを "Content-Type:application/graphql"にする必要があります。サンプルを見ていると、"Content-Type:application/json"のものが多くこの点が個人的にはハマりポイントでした。


今回は「API連携の柔軟性」について触れてみました。

CraftCMSには特に追加開発をすることなくサイト制作時に登録したデータを外部のシステム等と連携することが可能です。

APIを有効活用するには構築する際のフィールド設計が重要なポイントとなってきます。サイトの表示だけでなく、将来的なAPI連携のことも想定してなるべくデータは細かく分けて管理しておくことをオススメします。

それではまた次回!