モックサーバの起動

この時点では、まだバックエンドのREST APIの開発は完了していないため、そのままではREST APIを呼び出すことができません。そこで、OpenAPIドキュメントを使用してモックサーバを起動し、REST APIを呼び出せるようにします。

モックサーバにはPrismを使用します。PrismはOSSのモック&プロキシサーバで、OpenAPIドキュメントを使用してモックサーバを起動することができます。

Prismはコンテナイメージでも提供されています。そのコンテナイメージを使用して実行するためのDocker Composeファイルとしてdocker-compose.api-mock.ymlを予め作成しているため、Docker Composeを使用してDockerコンテナ上でモックサーバを起動します。

frontendディレクトリで、次のコマンドを実行します。なお、ここでは実行結果を確認しやすいよう、バックグラウンドで起動するためのパラメータである-dは付けずに実行します。

$ docker-compose -f docker/docker-compose.api-mock.yml up

次のようにstart Prism is listeningといった出力がされていれば、起動が完了しています。

prism_1  | [9:54:45 PM] › [CLI] …  awaiting  Starting Prism…
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      GET        http://0.0.0.0:9080/api/todos
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      POST       http://0.0.0.0:9080/api/todos
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      PUT        http://0.0.0.0:9080/api/todos/401.33348794918277
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      DELETE     http://0.0.0.0:9080/api/todos/170.16709317551496
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      POST       http://0.0.0.0:9080/api/signup
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      POST       http://0.0.0.0:9080/api/login
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      POST       http://0.0.0.0:9080/api/logout
prism_1  | [9:54:47 PM] › [CLI] ℹ  info      GET        http://0.0.0.0:9080/api/csrf_token
prism_1  | [9:54:47 PM] › [CLI] ▶  start     Prism is listening on http://0.0.0.0:9080

動作を確認するため、ブラウザを起動し、localhost:9080/api/todosにアクセスします。

Prismでは、レスポンスとしてOpenAPIドキュメントに定義されたexampleを使用するため、次のレスポンスが画面上に出力されることを確認します。(examplesを使用せずに動的に生成するDynamic Response Generation機能もあります)

[
  - {
        id: 2001,
        text: "やること1",
        completed: true
    },
  - {
        id: 2002,
        text: "やること2",
        completed: false
    }
]

Prismでは、リクエストを受信すると、ログをコンソールに出力します。/api/todosに対するGETリクエストを受信しているため、次のような内容が出力されています。

ism_1  | [4:29:54 AM] › [HTTP SERVER] get /api/todos ℹ  info      Request received
prism_1  | [4:29:54 AM] ›     [NEGOTIATOR] ℹ  info      Request contains an accept header: */*
prism_1  | [4:29:54 AM] ›     [VALIDATOR] ✔  success   The request passed the validation rules. Looking for the best response
prism_1  | [4:29:54 AM] ›     [NEGOTIATOR] ✔  success   Found a compatible content for */*
prism_1  | [4:29:54 AM] ›     [NEGOTIATOR] ✔  success   Responding with the requested status code 200

なお、モックサーバを停止させる場合には、起動したコンソールでCtrl+Cを押します。

これでモックサーバの起動は完了です。

results matching ""

    No results matching ""