eureka

microCMSとNuxt.jsでaxiosを使用したAPI取得まで

0

ヘッドレスCMSのお勉強でmicroCMSを触っているのですが、参考記事を見てハマったとこがあったので覚書です。

microCMSのアカウントとデータは事前に用意してください。こちらの記事ではAPIデータを読み込む部分だけの記事となります。

Nuxtプロジェクトの作成

プロジェクト名がhogehogeのnuxtプロジェクトを作成します。

ターミナルで任意のディレクトリに移動したら、下記のコマンドを打ちます。

$ npx create-nuxt-app hogehoge

プロジェクトの作成にあたり質問されるので任意で答えてください。ちなみに私はテストなので下記のように回答しました。

1Project name hogehoge
2Project descriptionMy ultimate Nuxt.js project
3Author nameShoji miyuki
4Choose the package managerYarn
5Choose UI frameworkNone
6Choose custom server frameworkNone
7Choose Nuxt.js modules
8Choose linting tools
9Choose test frameworkNone
10Choose rendering mode UniversalSSR
11Choose development tools

axiosの導入

プロジェクト作成時にaxiosを入れていればこちらの作業は不要です。入れ忘れたなどの場合があれば。

モジュールを導入してから、読み込みの作業をします。

axiosモジュールを導入

作成したnuxtアプリのディレクトリの中に入ってからaxiosをインストールします。

$ cd hogehoge
$ npm install --save @nuxtjs/axios

package.jsonの中を見てaxiosが入っていればOK

nuxt.config.jsの設定

nuxt.config.jsのファイルを開いてコンポーネントで使用するための設定を行います。

module.exports = {

  // 中略

  modules: [
    '@nuxtjs/axios',
  ],
  axios: {}
}

設定したら保存して閉じましょう。

APIキーを取得する

microCMSの管理画面からAPIキーとURIを取得します。

取得したいコンテンツのAPIリファレンスから下記2項目を取得します。

  • API認証キー(X-API-KEY)
  • APIのURL

API認証キーの取得

取得したいコンテンツのAPIリファレンスをクリックして表示を押します。

APIのURL

同ページ(APIリファレンス)の上部の試してみるボタンを押して表示されるURLをコピーします。

取得できたデータ

下記のデータが取得できていればOKです。

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
https://hogehoge.microcms.io/api/v1/productions

APIを取得して表示させる

Nuxtプロジェクトに戻り、取得してきたAPIキーをもとにデータを表示します。

index.vueを編集する

/src/pages/index.vueで不要な初期データを消します。

<template>
  <div class="container">
  </div>
</template>

<script>
</script>

<style>
</style>

上記のように消せたら、scriptタグ内に下記のように記述します。

microCMSで取得したキーもaxiosの中で指定します。

<template>
  <div class="container">
    {{ posts }}
  </div>
</template>

<script>
export default {
  async asyncData({ app }) {
    const [productions] = await Promise.all([
      app.$axios.get('https://hogehoge.microcms.io/api/v1/productions', { headers: {'X-API-KEY': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'} })
    ])
    return {
      posts: productions.data
    }
  },
}
</script>

上記は最低限の変数を定義していない指定方法です。プロジェクトに採用する際には必要に応じてリファクタリングをしてください。

最低でも.envを使用するのが良いと思います。

サーバを立ち上げて表示を確認する

yarnをインストールしたので下記のコマンドでビルトインサーバを立ち上げます。

$ yarn dev

ブラウザでhttp://localhost:3000/にアクセスしてAPIの内容が表示されていたらOKです!

ポート3000番が別のプロジェクトで埋まっている場合は3000番以外のポートを指定しないと表示されないので、サーバを立ち上げたターミナルを見てどこにアクセスすればいいかを確認してください。

参考にしたサイト

参考にさせていただきました!ありがとうございます。

リファクタリングにおすすめな記事

0