不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

JMeterでJSON形式のデータをPOSTリクエストで送信する方法

■はじめに

前回の記事(下記)でJMeterでGETリクエストの送信方法を紹介しました。

hiyo-ac.hatenablog.com

今回は続編で、JMeterからJSONのデータをPOSTリクエストで送信するときの設定を紹介します。

■実行環境

  • OS: Windows 10 Home 64bit
  • Java: 1.8.0_221
  • JMeter: 5.1.1
  • Node: 10.15.0
  • npm: 6.4.1
  • express: 4.16.0

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. JMeterJSONのデータを送信するPOSTリクエスト設定する

前回同様にまずはスレッドグループを作ります。JMeter左側のウィンドウにある「テスト計画」を右クリックし、 「追加」>「Threads(Users)」>「スレッドグループ」を選択します。

f:id:hiyo-ac:20190830233305p:plain
スレッドグループの作成

次にリクエストを行うHTTPリクエストの設定をしていきます。 作成したスレッドグループの名前を右クリックし、「追加」>「サンプラー」>「HTTP リクエスト」を選択します。そうするとスレッドグループの下に「HTTPリクエスト」という設定が追加されます。

f:id:hiyo-ac:20190830233211p:plain
HTTPリクエストの作成

HTTPリクエストを選択し、下記図の赤枠の項目をそれぞれ設定します。今回はPOSTメソッドなので、メソッドを「POST」にし、送信するデータのエンコーディングも「Content encoding」で指定しています。送信するデータは下部にある、「Body Data」のなかに直接記載します。

  • Webサーバ
    • プロトコル:http
      今回はhttpのPOSTリクエストを送信したいためhttpを設定します。
    • サーバ名またはIP: localhost
      nodeで実行しているWebサーバ向けにリクエストを出したいのでlocalhostとします。
    • ポート番号:3000
      nodeで実行しているWebサーバのポート番号を設定します。
  • HTTPリクエス
    • メソッド:POST
      POSTリクエストを送りたいのでPOSTを設定します。
    • パス:/
      nodeで実行しているWebサーバのパスを設定します。
    • Content encoding:UTF8
      送信するデータのエンコーディングを指定します。今回はUTF8にしました。
    • Body Data: { "name" : "JSON", "day" : "2019/08/31" }
      JSON形式でサーバに送信するデータを記載します。

f:id:hiyo-ac:20190831222216p:plain
POSTスレッドの設定

今回JMeterからサーバに対して、JSON形式でデータを送信するので、サーバ側でJSON形式と判定できるようにHTTPヘッダに、"Content-type: application/json"を追加します。
追加の方法は、スレッドグループの名前を右クリックし、「追加」>「設定エレメント」>「HTTP ヘッダマネージャ」を選択します。そうするとスレッドグループの下に「HTTPマネージャ」という設定が追加されます。

f:id:hiyo-ac:20190831222708p:plain
HTTPヘッダマネージャの作成

作成した「HTTPヘッダマネージャ」を選択し、下部にある「追加」ボタンを押下することで、ヘッダの設定を追加することができます。1度「追加」ボタンを押下し、名前に"Content-type"と入力し、値に"application/json"と記載します。これでHTTPヘッダの追加ができました。

f:id:hiyo-ac:20190831223133p:plain
HTTPヘッダの設定

ここまででPOSTメソッドでJSON形式を送信する設定が完了しました。結果をみるために、「結果を表で表示」を追加して、「開始」ボタンを押下してみます。

サーバ側のログを見ると、POSTリクエストが来ていることと送信されたデータを確認することができます。

f:id:hiyo-ac:20190831223531p:plain
サーバログ

また、「結果を表で表示」を見てみると、送信できていて成功していることがわかります。

f:id:hiyo-ac:20190831223653p:plain
結果を表で表示

■終わりに

近年のWebAPIは、JSON形式のデータをやり取りすることが多くなってきているのでこの記事が参考になればと思います。 今回はPOSTメソッドでJSON形式の定型データをサーバに送信していました。ただ、決まった値を複数回送信することは少ないと思うので、次回の記事ではCSVファイルにパラメータを記載し、そのCSVファイルのパラメータをJSONのデータに設定して送信する記事を作成したいと思います。