私は groovy をよりよく理解しようとしており、この使用法に出くわしました。
私の質問はそれとは無関係ですが、Http-Builderを使用しているときにこれを見つけました-私は主に、暗示される一般的なユースケースの「グルーヴィーな方法」を見つけることに興味があります。
クロージャーを受け取る既存の「リクエスト」メソッドがあり、http-builder がそのクロージャーを呼び出すと、「リクエスト」という 1 つのパラメーターが渡されます。このようなクロージャーに渡される追加情報を取得する最良の方法は何ですか?
通常の使用法に従うと、コードは次のようになります。
myHttpClient.request(POST) { req ->
uri.path = 'some path'
uri.query = [ p1:'value1', p2:'value2' ]
....
}
この例では、3 つの値 (パス、およびクエリ パラメータ 1 と 2 の値) を動的に設定 (または渡し) できるようにしたいと考えています。
私は正しい方法を知るのに十分な方法を知りませんが、次のようなことをしました:
EDITはコードをクリーンアップしました
def myPath = '/a/b/c'
def p1Param = 'p1Value'
def p2Param = 'p2Value'
def myClosure = { req ->
uri.path = myPath
uri.query = [ p1:p1Param, p2:p2Param ]
....
}
// first call:
myHttpClient.request(POST, myClosure)
// later on:
myPath = '/new/path'
p1Param = 'newValue1'
p2Param = 'newValue2'
myHttpClient.request(POST, myClosure)
これは機能し、DRYですが、醜いので、もっと良い方法があると思います/願っています。また、呼び出し全体を独自のクロージャーに入れて、単にそれを呼び出すことも考えました。これも、より良い方法があることを望んでいました!