Mule ESB 3.7 GETのQuery Parameterを解析してログに出すサンプル
'http://localhost:8082/4apppot/output_queries?name1=test1&name2=test2' こういうURLでアクセスしたときに、Query Parameterを解析するサンプルです。
"#[message.inboundProperties.'http.query.params'.name1]"というキーを指定して取得することもできますが、動的にQueryを解析したい場合には、固定のキーを書くことができないこともあると思います。
Muleアプリのサンプル
実行時のログ
'http://localhost:8082/4apppot/output_queries?name1=test1&name2=test2'にアクセスしたときに、次のログが出力されました。1行が長くて見にくいので、大事なところだけ編集しています。
About to echo ParameterMap{[name1=[test1], name2=[test2]]} payload(1): name2=test2 payload(1).key: name2 payload(1).value: test2 payload(2): name1=test1 payload(2).key: name1 payload(2).value: test1
サンプル解説
foreachでループ
Queryの数分ループします。 '#[counter]'で、ループの回数を取れます。0じゃ無くて、1からスタートするので注意!
entrySet()
このサンプルのポイントは、foreachのcollectionに指定している"#[message.inboundProperties.'http.query.params'.entrySet()]"
。
25行目で、#[message.inboundProperties.'http.query.params']
の値をログに出していますが、その時の値は
ParameterMap{[name1=[test1], name2=[test2]]}
。つまりMapです。entrySet()を使うことで、payload変数にはKey、Valueのセットが入ります。
後はpayload.keyでQueryのKeyへ、payload.valueでQueryのValueへアクセスできます。