2016-02-04 28 views
4

我正在爲Grails控制器編寫一些功能測試,並且我感覺在測試查詢參數時它變得混亂。Grails RestBuilder查詢參數

我知道我可以做到這一點,但它似乎笨重。

Map getParms = [id:1, x:foo, y:bar, z:baz] 
RestResponse response = builder.get("http://example.com/api/{id}?x={x}&y={y}&z={z}") { 
    urlVariables getParams 
} 

理想我想:

  1. 填寫使用上述
  2. urlVariables參數基本URL(即Id)的傳遞查詢參數的另一個映射,附加各自的密鑰值對

喜歡的東西:

Map queryParms = [x:foo, y:bar, z:baz] 
RestResponse response = builder.get("http://example.com/api/{id}") { 
    urlVariables id:1 
    queryVariables queryParams 
} 

我覺得這樣會更「幹」,而且更易讀寫。

有誰知道這種機制是否存在?我知道我可以組建一個班級來完成這個任務,但是如果有現有的實施方案,我希望避免這種情況。

回答

3

你可以做如下。

Map queryParams = [x: 'foo', y: 'bar', z: 'baz'] 
RestResponse response = builder.get("http://example.com/api/{id}", queryParams) { 
    urlVariables id:1 
} 

RestBuilder'sget()超載接受3個PARAMS:字符串URL,地圖queryParams和RequestCustomizer關閉

+2

感謝這一點 - 但它似乎只替換變量標記爲佔位符的URL,不添加查詢字符串。我希望避免必須使用佔位符設置網址,然後只需在其上放置地圖即可。目前,我剛剛寫了一個快速方法將地圖連接成查詢字符串。 – acanby

1

我最初使用的API時,感受到了同樣的尷尬。目前,我正在做的東西稍微更簡潔:

RestResponse response = builder.get("http://example.com/api/{id}?x={x}&y={y}", [id:1, x:'foo', y:'bar']) 

感覺並不壞,有點相同的風格,在常規SQL命名的SQL參數