Grails RestBuilder查询参数

时间:2016-02-04 23:54:19

标签: grails

我正在为Grails控制器编写一些功能测试,我觉得在测试查询参数时它会变得混乱。

我知道我可以做到这一点,但它看起来很笨重。

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. 使用上面的urlVariables参数
  2. 填写基本网址(即Id)
  3. 传递另一个查询参数映射,将每个参数附加为键值对
  4. 类似的东西:

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

    我觉得这会更“干”,更容易阅读/写作。

    有谁知道这种机制是否存在?我知道我可以组建一个类来完成它,但如果有现有的实现,我希望避免这种情况。

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作。

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

RestBuilder's get()以接受三个参数:String url,Map queryParams和RequestCustomizer闭包

答案 1 :(得分:1)

最初使用API​​时,我感到同样的尴尬。目前我正在做一些更简洁的事情:

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

在groovy SQL中使用命名的sql参数感觉不好,有点相同。