そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

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アプリのサンプル

gist.github.com

実行時のログ

'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へアクセスできます。