node-easymock で 簡単にWebAPIのモックサーバーを作る | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

こんにちは。ゆんゆんです。

WebAPIを使用したサーバークライアントシステムの開発において、
APIの仕様が決まれば、通常は同時進行で、サーバーとクライアントの開発が行われます。
そのため、クライアント側は、サーバーが完成していない状態で開発を進めないといけません。
そこで、モックサーバーの出番です。
モックサーバーでは、特定のリクエストに対して、特定のレスポンスを返します。

モックサーバーを使用するメリットは以下の通りです。
・サーバー側の完成を待たずに、クライアント開発ができる。
・安定して動作確認ができる。

今回は、WebAPIモックサーバーを簡単に作成できる node-easymock を紹介します。



■node-easymock のインストール

今回の動作確認した環境は以下の通りです。

・Windows 7 SP1 64bit
・Node.js v0.12.9

node-easymock は、Node.js 上で動作します。
まず、Node.js をインストールします。
下記のサイトで、「node-v0.12.9-x86.msi」をダウンロードして、インストールしてください。
Node.js (v0.12.9)のダウンロード

インストール後、コマンドプロンプトを起動します。
以下のコマンドを実行して、Node.js がインストールされていることを確認します。

$ node -v
v0.12.9

$ npm -v
v2.14.9

以下のコマンドを実行して、node-easymock をインストールします。

$ npm install -g easymock



■node-easymock のリソースの作成

以下のコマンドを実行して、node-easymock が起動します。

$ easymock

起動したフォルダ以下に、レスポンス用のJSONファイルを作成します。
例えば、「GET /books」 リクエストした場合、books_get.json ファイルの内容を返却します。
[リソース名]_[HTTPメソッド].json 形式のファイルを作成するだけで良いのです。

GitHub にサンプルのJSONファイルを用意しました。
「api」フォルダを node-easymock 起動フォルダにコピーします。
【サンプルはこちら】



■node-easymock の動作確認

Chromeアプリの REST クライアントを使用すれば
簡単に動作確認ができます。
Advanced REST clientのダウンロード

REST クライアントで以下のURLにアクセスしてみましょう。

JSONファイル: /api/1.0/users_get.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users
2. [GET]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users_post.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users
2. [POST]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users/user-id-001_get.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users/user-id-001
2. [GET]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users/user-id-001_put.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users/user-id-001
2. [PUT]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users/user-id-001_delete.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users/user-id-001
2. [DELETE]選択して、[SEND]ボタン押下する。



■node-easymock の便利な機能

◆ポートの変更

デフォルトのポートは 3000 です。
起動時に、-p オプションで任意のポート番号を指定することができます。

$ easymock -p 3001


◆API一覧の表示

以下のURLで、API 一覧を確認することができます。
APIをクリックすると、レスポンスを確認することができます。

API Documentation
http://localhost:3000/_documentation/


◆アクセスログの表示

以下のURLで、アクセスログを確認することができます。

Access Logs
http://localhost:3000/_logs/


◆レスポンスヘッダーの追加

JSONファイルに 「< @header」を追加すると、レスポンスヘッダーを付与することができます。


< @header Location: http://www.pa-rk.co.jp/
{
"userId":"user-id-002",
"userName":"Toyotomi Hideyoshi",
"gender":"male",
"age":"62",
"birthDay":"1536/02/02",
"address":"Osaka",
"message":"try cry hototogisu"
}



◆HTTPステータスの変更

デフォルトのHTTPステータスは 200 です。
JSONファイルに 「< @status」を追加すると、HTTPステータスを変更することができます。


< @status 401
{
"error":{
"status":401,
"message":"Unauthorized"
}
}



◆設定ファイル

node-easymock の起動フォルダに、設定ファイル config.json を置くことができます。


◆応答待ち時間の設定

設定ファイルにおいて
「simulated-lag」で応答待ち時間を設定することができます。単位はミリ秒です。


{
"simulated-lag": 1000
}


特定のパスだけ、応答待ち時間を変更することもできます。


{
"simulated-lag": {
"default": 1000,
"paths": [
{
"match": "user-id-003",
"lag": 5000
}
]
}
}



◆クロスドメイン通信エラーの回避

CORS(Cross-Origin Resource Sharing) とは、
WebブラウザがHTMLを読み込んだ以外のサーバからデータを取得する仕組みです。
各ブラウザは、クロスドメイン通信をエラーとする仕組みがあるため、
このエラーを回避する設定ができます。


{
"cors": true
}


以上です。