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
}
以上です。