WebAPI サーバと通信テストをするための Node.js スクリプトを作ってみる
Express で WebAPI サーバを作って、実際にデータをやり取りできるかテストするために、Node.js スクリプトを作ってみた。
今回の Node.js スクリプトで使用するのは、Node.js 組み込みの http
モジュールのみ。依存パッケージがないのでシンプルかと。
目次
- ベーススクリプト
- GET 通信 (Find) のテスト
- POST 通信 (Create) のテスト
- PUT 通信 (Update) のテスト
- DELETE 通信 (Destroy) のテスト
- 実行してみる
ベーススクリプト
まずは HTTP 通信の共通処理をまとめた base.js
を作成する。
/* tests/base.js */
const http = require('http');
/**
* HTTP 通信テスト関数
*
* @param postDataObj 送信するデータオブジェクト
* @param requestOptions オプション : path と method を指定する
*/
module.exports = (postDataObj, requestOptions) => {
// オブジェクトから文字列化する
const postData = JSON.stringify(postDataObj);
// オプション情報をマージする
const options = Object.assign({
// サーバのホストをココで指定しておく : この場合は localhost:8080
host: 'localhost',
port: 8080,
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(postData)
}
}, requestOptions);
// リクエスト送信開始
const req = http.request(options, (res) => {
console.log(`Status : ${res.statusCode}`);
console.log(`Headers : ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
// (未整形のままレスポンスデータを出力する)
console.log(`Body : ${chunk}`);
// 整形して出力できそうなら出力する
try {
console.log(JSON.stringify(JSON.parse(chunk), null, ' '));
}
catch(e) { }
});
});
// エラー時
req.on('error', (error) => {
console.log(`Problem With Request : ${error.message}`);
});
req.write(postData);
req.end();
};
次に、テストしたい内容に合わせて、base.js
を利用したファイルを作っていく。
GET 通信 (Find) のテスト
/* tests/get.js */
const base = require('./base');
// POST するデータなし
const postData = {};
// http://localhost:8080/api/users に GET 通信する
const options = {
path: '/api/users',
method: 'GET'
};
// テスト実行
base(postData, options);
POST 通信 (Create) のテスト
/* tests/post.js */
const base = require('./base');
// 追加したいデータを用意する
const postData = {
'name': 'テストユーザ',
'age' : 99
};
// POST 送信する
const options = {
path: '/api/users',
method: 'POST'
};
// テスト実行
base(postData, options);
PUT 通信 (Update) のテスト
/* tests/put.js */
const base = require('./base');
// 更新したいフィールドのみデータを用意する
const postData = {
'name': '改姓テストユーザ'
};
// PUT 送信する
const options = {
path: '/api/users/25', // ID を指定する
method: 'PUT'
};
// テスト実行
base(postData, options);
DELETE 通信 (Destroy) のテスト
/* tests/delete.js */
const base = require('./base');
// POST するデータなし
const postData = {};
// DELETE 通信する
const options = {
path: '/api/users/39', // ID を指定する
method: 'DELETE'
};
// テスト実行
base(postData, options);
実行してみる
これでスクリプトの用意は完了。
あとは $ node ./tests/get.js
とか $ node ./tests/update.js
とかいう風にスクリプトを実行すると、指定のリクエストデータをサーバに送信し、レスポンス情報がコンソールに出力されるだろう。
Node.js 標準モジュールだけでもこんなことができて、よきよき。