Mirage を使用した Next.js ページの開発

Next.js アプリケーションのページ内でクライアント側の API リクエストをモックすることで、バックエンドサービスなしでローカル開発を続けることができます。

注: 現時点では、Mirage はブラウザでのみ動作します。つまり、`getServerSideProps` などのフックを介して Next.js アプリケーションが行うサーバー側のネットワーク呼び出しはモックされません。

ステップ1: Mirageのインストール

まず、プロジェクトに Mirage を追加していることを確認してください。

# Using npm
npm install --save-dev miragejs

# Using Yarn
yarn add --dev miragejs

ステップ2: ページにサーバーを作成する

ページファイル内で、Mirage から Server をインポートし、サーバーを作成し、コードに必要な API エンドポイントのモックを開始します。

// pages/index.js
import { useState, useEffect } from "react"
import { createServer } from "miragejs"

createServer({
  routes() {
    this.get("/api/movies", () => ({
      movies: [
        { id: 1, name: "Inception", year: 2010 },
        { id: 2, name: "Interstellar", year: 2014 },
        { id: 3, name: "Dunkirk", year: 2017 },
      ],
    }))
  },
})

export default function Index() {
  let [movies, setMovies] = useState([])

  useEffect(() => {
    fetch("/api/movies")
      .then((res) => res.json())
      .then((json) => {
        setMovies(json.movies)
      })
  }, [])

  return (
    <ul>
      {movies.map((movie) => (
        <li key={movie.id}>
          {movie.name} ({movie.year})
        </li>
      ))}
    </ul>
  )
}

これで、ページの開発を続け、バックエンド API エンドポイントを Mirage でモックしながら作業を進めることができます。

注: Mirage サーバーは一度に 1 つしかインスタンス化できないため、モックコードを複数のページで共有する場合は、Mirage サーバーの集約と共有に関するガイドをご覧ください。