インフラ

正規表現なし!JMeterでレスポンス(JSON)を抽出して次のリクエストに利用する!

jmeter-json-response

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

今回はこのような質問をいただきました。

JMeterでレスポンスからデータを取得したい!

実際のリクエストを想定するとこのような処理が必要なケースが多いですね。

ただ、紹介されているのは正規表現を使う方法ばかり…

そこで今回はこちらの質問について解説していきます!

結論:JSR223 Listenerを利用する!

正規表現抽出を利用する方法が多く紹介されていますが、今回はJSR223 Listenerを利用します。

JSR223 Listenerを利用することでJavaScriptやJava等でパラメータを制御することができます。

正規表現よりもわかりやすく管理がしやすかったです!

JSR223 Listenerの使い方!

JSR223 Listenerの追加

取得したいパラメータを返す「HTTPリクエスト」を右クリックして「追加」→「リスナー」→「JSR223 Listener」から追加します。

JSR223 Listenerの追加

ちなみに「Options」→「Choose Language」→「Japanese」から日本語に変更できます!

言語の選択

今回はJavascriptを利用します。

「Script language」で「Javascript」を選択します。

レスポンスがJSON形式だとやっぱりJavascriptが一番扱いやすいですね!

言語の選択

レスポンスを取得する

レスポンスとして、こちらのJSONが返ってきていることを想定したサンプルコードとなっています。

{
	"foo": "foo!",
	"hoge": "hoge!"
}

「Script」に以下のコードを記述します。

取得したいパラメータに合わせてコードを変更してください。

// レスポンスのJSONをパースして受け取る
var body = JSON.parse(sampleResult.getResponseDataAsString())

// 変数に代入
var foo = body.foo
var hoge = body.hoge

// ログを出力
log.info('foo: ' + foo)
log.info('hoge: ' + hoge)

// パラメータにセット
vars.put('foo', foo)
vars.put('hoge', hoge)
レスポンスを取得する

9, 10行目で出力しているログは「オプション」→「ログビューア」で確認できます。

2行目でJSONを取得できたら、あとはJSの処理なのでJSが書ければ問題ないと思います!

パラメータを利用する

13, 14行目でセットしたパラメータは別のリクエストで${foo}, ${hoge}のように利用することができます。

パラメータを利用する

これで別のリクエストでレスポンスを利用することができますね!

あとがき

正規表現よりもわかりやすくて扱いやすいので良いですね!

本当はJSON Extractorというのを使ってみたかったけどよくわからなかった…

でも結果としてはこれで満足!