無料版がリリースされたヘッドレスCMS「Newt」をReactで触ってみた

JavaScript

Newtとは2022年3月8日に無料版がリリースされたヘッドレスCMS(Headless CMS)です。
今回、たまたまTwitterでお見かけしたので、管理画面からReactの簡易実装テストまで行いました。

悩見坂 楓
悩見坂 楓

純国産のヘッドレスCMS?ヘッドレスCMSって何かよくわからないけど……

著者
著者

ヘッドレスCMSについては別途まとめておきます!Newt使いやすかったよ!

なかなか使い勝手が良いですね。ただ、ヘッドレスCMSの難点としてはJavaScriptやPHPなど、コーダーにとってはハードルがやや高めな点でしょうか。

シンプルな直感的で分かりやすいUIでかなりとっつきやすい印象のNewt。

どんなフローでデータを引っ張ってくるのか、感触をつかむためにReactデフォルトプロジェクトで試してみました。

ヘッドレスCMSって何と言う方は、下記記事を参照して下さい。

まずはNewtのサイトで記事を書く

国産ヘッドレスCMS「Newt」の管理画面

ユーザー登録もあっという間に終わるので、ここでは手順は割愛して、とりあえずブログのテスト記事を作成しました。もちろんヘッドレスCMSなので記事の表示確認は現段階では行えません。

みなさんも適当に触ってみることをおすすめします。(公開という概念が無いので現時点では誰も見れません。)

ReactデフォルトアプリからAPIをたたく

Reactなんでhttps://github.com/Newt-Inc/newt-client-jsに掲載されているJavaScript SDK for Newt’s APIをインストールする必要があります。

いつものnpm、yarn addで行います。

npm install newt-client-js
# or
yarn add newt-client-js

実装はこんな感じに簡易で行いました。

import React from 'react';
import logo from './logo.svg';
import './App.css';
import { createClient } from 'newt-client-js'; // Newtモジュールのインポート

const client = createClient({
  spaceUid: 'XXXXXXXXXXX', // Newt SpaceUIDの指定
  token: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // Newt アクセストークンの指定
  apiType: 'cdn'
});

let _title: string;
client
  .getContent({
    appUid: 'blog',
    modelUid: 'article',
    contentId: '61b1688832470a0018d79f4a'
  })
  .then((content: any) => {
    _title = content.title;
    console.log(content.title);
  })
  .catch((err) => console.log(err));

const App = () => {
  return (
    < div className="App" >
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>{_title}</p>
        <a
          className="App-link"
          href="/#"
        >
        </a>
      </header>
    </div >
  );
}

export default App;
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

gitHubにもありますが、下記がNewtのAPIを呼び出すコードのサンプルです。

const client = createClient({
  spaceUid: 'XXXXXXXXXXX',
  token: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  apiType: 'cdn'
});

client
  .getContent({
    appUid: 'blog',
    modelUid: 'article',
    contentId: '61b1688832470a0018d79f4a'
  })
  .then((content: any) => {
    console.log(content.title)
  })
  .catch((err) => console.log(err));

実装……と言ってもテストなので、Newtから記事情報を引っ張ってきて、タイトルを表示するだけの接続テストです。

上記コードできちんとブログのタイトルが取れました。

いろいろ触ってアプリケーションも形に出来そうですね。

(参考:新しいコンテンツ管理の体験ヘッドレスCMS「Newt」

タイトルとURLをコピーしました