JMeterでJSON形式のデータをPOSTリクエストで送信する方法
■はじめに
前回の記事(下記)でJMeterでGETリクエストの送信方法を紹介しました。
今回は続編で、JMeterからJSONのデータをPOSTリクエストで送信するときの設定を紹介します。
■実行環境
1. リクエストを受け付けるWebサーバの構築
Webサーバの構築は前回の記事を参照いただければと思います。
今回はJSONのデータをやり取りするので、app.jsにJSONのデータをやり取りするための記述と、index.jsにPOSTリクエストを受信できるように記述を追加します。
/* ~~~省略~~~ */ var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); //*~~~省略~~~ */
コード1: app.jsに追記したコード
/* ~~~ 省略 ~~~ */ /* POST REQUEST */ router.post('/', function(req, res, next) { console.log(req.body); res.send('POST request'); }); /* ~~~ 省略 ~~~ */
コード2: index.jsに追記したコード
今回はデバッグのため、POSTリクエストで送られてきたデータをコンソールに表示するようにしました。
2. JMeterでJSONのデータを送信するPOSTリクエスト設定する
前回同様にまずはスレッドグループを作ります。JMeter左側のウィンドウにある「テスト計画」を右クリックし、 「追加」>「Threads(Users)」>「スレッドグループ」を選択します。
次にリクエストを行うHTTPリクエストの設定をしていきます。 作成したスレッドグループの名前を右クリックし、「追加」>「サンプラー」>「HTTP リクエスト」を選択します。そうするとスレッドグループの下に「HTTPリクエスト」という設定が追加されます。
HTTPリクエストを選択し、下記図の赤枠の項目をそれぞれ設定します。今回はPOSTメソッドなので、メソッドを「POST」にし、送信するデータのエンコーディングも「Content encoding」で指定しています。送信するデータは下部にある、「Body Data」のなかに直接記載します。
- Webサーバ
- HTTPリクエスト
今回JMeterからサーバに対して、JSON形式でデータを送信するので、サーバ側でJSON形式と判定できるようにHTTPヘッダに、"Content-type: application/json"を追加します。
追加の方法は、スレッドグループの名前を右クリックし、「追加」>「設定エレメント」>「HTTP ヘッダマネージャ」を選択します。そうするとスレッドグループの下に「HTTPマネージャ」という設定が追加されます。
作成した「HTTPヘッダマネージャ」を選択し、下部にある「追加」ボタンを押下することで、ヘッダの設定を追加することができます。1度「追加」ボタンを押下し、名前に"Content-type"と入力し、値に"application/json"と記載します。これでHTTPヘッダの追加ができました。
ここまででPOSTメソッドでJSON形式を送信する設定が完了しました。結果をみるために、「結果を表で表示」を追加して、「開始」ボタンを押下してみます。
サーバ側のログを見ると、POSTリクエストが来ていることと送信されたデータを確認することができます。
また、「結果を表で表示」を見てみると、送信できていて成功していることがわかります。
■終わりに
近年のWebAPIは、JSON形式のデータをやり取りすることが多くなってきているのでこの記事が参考になればと思います。 今回はPOSTメソッドでJSON形式の定型データをサーバに送信していました。ただ、決まった値を複数回送信することは少ないと思うので、次回の記事ではCSVファイルにパラメータを記載し、そのCSVファイルのパラメータをJSONのデータに設定して送信する記事を作成したいと思います。