もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

MicroCMSためした

はじめに

こんばんは。

今回は存在は知っていたけど、使ったことなかったヘッドレスCMSの MicroCMSを試してみました。

会員登録を先程終わらせたバリバリ初心者です。

f:id:kojirooooocks:20200503040158p:plain

ではやっていきます。

本題

とりあえずAPIのURLを登録して、早速テスト用のAPIを作成します。

f:id:kojirooooocks:20200503041529p:plain

今回は お知らせ の情報のみをもらう、リスト形式のAPIとして作成します。

f:id:kojirooooocks:20200503041649p:plain

APIスキーマはこんな感じで、ほぼほぼ placeholderに出てきた内容そのままです。

f:id:kojirooooocks:20200503041754p:plain

各項目の詳細設定で、必須にするなどの選択もできます。

f:id:kojirooooocks:20200503041840p:plain

実際に登録すると、サイドバーにコンテンツとして、登録したAPIが作成されて、そこに遷移すると、スキーマとして登録した状態で、入力フィールドが生成されてます。こんな感じで登録してみました。

f:id:kojirooooocks:20200503042014p:plain

今回はわかりやすく、コンテンツIDもわかりやすいものに変更しておきます。

f:id:kojirooooocks:20200503042131p:plain

これで公開することで、実際に登録した情報がAPIを実行することで取得できます。

今回は以下の通り、2個のお知らせを登録しました。

f:id:kojirooooocks:20200503043859p:plain

ちなみにAPIリファレンスで実際に叩くAPIや、サポートされているクエリなども確認できます。

f:id:kojirooooocks:20200503043249p:plain

ちょっとやってみます。

ちょうど前回の記事で落としてきたCakePHPのプロジェクトがあるのでそれで試してみます。

src/Controller/ExampleController.php
<?php
namespace App\Controller;

class ExampleController extends AppController
{
    public function index()
    {
        $url = 'https://********.microcms.io/api/v1/news';
        $http = new Client();
        $response = $http->get($url, [], [
            'headers' => [
                'X-API-KEY' => '******************************'
            ]
        ]);

        $newsData = json_decode($response->getStringBody(), true);
dd($newsData);die();
    }
}

f:id:kojirooooocks:20200503044917p:plain

テンプレートで表示するとこんな感じ?

<div>
    <p>こんにちは!</p>
    <p>CakePHPのテンプレートですよ!</p>
</div>

<div>
    <?php foreach ($newsData['contents'] as $newsDatum): ?>
        <div>
            <?php echo $newsDatum['title']; ?><br />
            <?php echo $newsDatum['body']; ?><br />
            <?php echo $newsDatum['publishedAt']; ?>
        </div>
    <?php endforeach; ?>
</div>

Image from Gyazo

リンクも画像も問題ないですね。

こんな感じで、簡単でした。

終わりに

流行るのわかりますね。 すげー簡単。

wordpressで頑張るよりは、遥かに使いやすい感じだと思いました。

現場からは以上です。