インフラ

【正規表現なし】JMeterでレスポンス(JSON)を取得して次のリクエストに利用する!【JSR223 Listener】

jmeter-json-response
野田竣介

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

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というのを使ってみたかったけどよくわからなかった…

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

記事URLをコピーしました