Next.jsでmicroCMSに記録したテキストを表示するまで

microCMS の公式サイトの Getting Started の手順に従います。

目次

microCMSの設定

microCMSのアカウントを作成後、管理画面にログインします。「APIの作成」から「自分で決める」を選択

API名とエンドポイントの名称を決めます。

「hello world !」というテキストを設定

curlを使ってAPIの動作確認


$ curl "https://vivo-blog.microcms.io/api/v1/hello" -H "X-MICROCMS-API-KEY: hoge-hoge-hoge-hoge-hoge-hoge"
{"createdAt":"2023-05-02T06:04:10.156Z","updatedAt":"2023-05-02T06:37:29.352Z","publishedAt":"2023-05-02T06:04:10.156Z","revisedAt":"2023-05-02T06:37:29.352Z","text":"hello world ! hello micro cms"}
  • X-MICROCMS-API-KEYは、「hoge-hoge-hoge-hoge-hoge-hoge」に変更して表示しています。
  • 正常に取得できることを確認できました。

Next.jsのアプリを作成

typescript、tailwindcssを使わずにアプリを作成します。

$ npx create-next-app nextjs-microcms
✔ Would you like to use TypeScript with this project? … No / Yes
✔ Would you like to use ESLint with this project? … No / Yes
✔ Would you like to use Tailwind CSS with this project? … No / Yes
✔ Would you like to use `src/` directory with this project? … No / Yes
✔ Would you like to use experimental `app/` directory with this project? … No / Yes
✔ What import alias would you like configured? … @/*
Creating a new Next.js app in /home/ariki/src/site/nextjs2-microcms.

Using npm.

Initializing project with template: default


Installing dependencies:
- react
- react-dom
- next
- eslint
- eslint-config-next


added 268 packages, and audited 269 packages in 6m

105 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
Initialized a git repository.

Success! Created nextjs-microcms at /home/ariki/src/site/nextjs-microcms

公式のmicrocms-js-sdkをインストールします。

$ npm install microcms-js-sdk

libs/client.jsの編集

import { createClient } from 'microcms-js-sdk';

export const client = createClient({
  serviceDomain: 'vivo-blog',  // service-domain は XXXX.microcms.io の XXXX 部分
  apiKey: 'hoge-hoge-hoge-hoge-hoge-hoge',
});

pages/index.jsの編集

import Head from "next/head";
import styles from "../styles/Home.module.css";
import { client } from '../libs/client';

export default function Home({ data }) {
  return (
    <div className={styles.container}>
      <Head>
        <title>Create Next App</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>

      <main className={styles.main}>
        <h1 className={styles.title}>{data.text}</h1>
        <p className={styles.description}>
          Get started by editing <code className={styles.code}>pages/index.js</code>
        </p>
      </main>
    </div>
  );
}

export const getStaticProps = async () => {
  const data = await client.get({
    endpoint: 'hello',
  });

  return {
    props: {
      data,
    },
  };
};

ローカルでアプリを起動して表示確認。正常に表示されることを確認しました。

よかったらシェアしてね!

この記事を書いた人

次男が高校ラグビー部での活動を終え、卒部を迎えました。これで、長男、次男ともに中学での野球部、高校でのラグビー部の活動が全て終わりました。9年間怪我をしながらも無事にやり切りました。小学校のソフトボールも入れると15年にもなりました。息子たちも大変でしたが、親も休日は部活動の送迎、応援、動画撮影、編集にと忙しくも楽しい時間を過ごすことができました。

目次
閉じる