easymockなモックサーバでAPI試験

こんにちは、mi2yo4です。

前回、これからはAPIファーストと言っていて、ツール紹介もするよと書きましたので…早速どんなものを使っているのかを挙げておこうかなと思います。

APIベースの開発をするにあたってとりあえず困っている事

APIベースの開発をしよう、という段になって少し困っている事がありました。
それはこんな事なのですが…

「APIの仕様は決まったけども、それで動作確認できるモノが無い」

今日はクライアント側(Webブラウザで動作するソフト)の開発で考えてみます。
APIが決まっているけども、APIに準拠したサーバソフトはまだ出来ていない。

とりうる手段は二つ。

  • サーバ側ソフトが出来るまでサーバ―クライアント間の動作確認をせずに開発
  • サーバ側ソフトを最低限準拠した形でまず作成し、サーバ―クライアント間の動作確認をしつつ開発

…どちらも出来れば避けたいですね。前者であればビッグバンテストになってしまいますし、後者であればAPIの数にもよりますが、サーバ側ソフトを作るのにそれなりの工数がかかってしまいます。

モックサーバを立てればいいじゃない

昔であれば上記のどちらかを選ばなくてはいけなかったのですが、21世紀の今日ではもっと便利な仕組みが揃っています。モックサーバを立てればいいのですよ!

仮りそめであるモックサーバ、今回はnode-easymockを使ってみました。
JSONファイルをテキストで用意しておけば、それをクライアントへの通信として使用できますので、サーバ側についてはJSONファイルを用意しておくだけの手間いらずとなります。早速インストールして使ってみましょう!

前提条件

node-easymockは名前の通り、node.js上で動作するので、node.jsがインストール済みである事が前提です。
node.jsが未インストールの場合は、nodeダウンロードページでダウンロード、インストールしておきます。

easymockのインストール

そして下記の記事を参考にeasymockをインストールします。

インストール後、適当なディレクトリを作成し、その中にxxxx_(method).jsonファイルを作成します。

今回はhttp://localhost:3000/user/house/0にアクセスした場合にjsonファイルを取得したいと考えました。
まず、easymockというディレクトリを作成し、その下にuserディレクトリ、その下にhouseディレクトリを作成し、houseディレクトリ内に0_get.jsonというファイルを作りました。

easymock
  +- user
     +- house
       +- 0_get.json

そして、(Windowsなので)おもむろにコマンドプロンプトを立ち上げ、easymockディレクトリに移ります。

easymock

これだけで、http://localhost:3000/user/house/0 にアクセスすればJSONファイルをGETする事ができます。簡単ですね!

注意事項

JSONをただGETするだけであれば簡単ですが、html,javascriptの配信元とajaxの通信先サーバのドメインが違えばセキュリティの関係上、そのままでは使えません。
easymockディレクトリ内に以下のようなconfig.jsonファイルを置いておきました。

config.json

{
    "cors": true,
    "jsonp": false
}

こうしておくことで、一時的にlocalhostを信頼できる通信先だと思い込ませて、クロスドメイン間でのajax通信が出来るようになります。
手元で動作確認だけであればこれで十分ですね。

まとめ

いかがだったでしょうか?

モックサーバを気軽に立てることが出来れば、APIファーストのクライアント開発も大分楽になりますね!
私もこれを使って色々と事前に動作確認が出来るので大変助かっています。

また便利なツールがあれば、ここで紹介してみようかと思います。

それではまた!