使用httpbuilder为grails restful webservice

时间:2012-02-28 09:33:36

标签: web-services grails httpbuilder

我是第一次使用grails开发一个restful webservice,我按照grails文档中的第13章设置了对GET请求的简单响应。

我没有得到的是设置HTTPBuilder来创建一个发出get请求的客户端。我已经下载了jar的httpbuilder, Restful客户端定义如下

import groovyx.net.http.*
import static groovyx.net.http.ContentType.JSON

def http = new HTTPBuilder("http://localhost:8080/amazon")

http.request(Method.GET, JSON) { url.path = '/book/list' response.success = { resp, json -> for (book in json.books) { println book.title } } }

那么他们为客户端定制的代码是一个新的HTTPBuilder类定义了吗?如果是,我们需要在哪里定义这个类

现在,在我的控制器中显示def的URL路由不会发生。

由于

1 个答案:

答案 0 :(得分:2)

我不确定你到底要做什么,因为我不知道你的localhost服务应该返回什么。由于您正在寻找图书,以下是使用Google图书搜索的示例,可能会有所帮助。我写的是如果你愿意的话你可以在Groovy控制台中运行,但也可以在grails中运行。

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.2' )

import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.JSON
import static groovyx.net.http.Method.GET

def http = new HTTPBuilder("https://www.googleapis.com")

http.handler.failure = { resp, json ->
    println "it broke ${resp} ${json}"
}
http.get(path: '/books/v1/volumes', query:[q:'quilting']) { resp, json ->
    if (resp.status == 200) {
        json?.items.each {book ->
            println "${book?.volumeInfo?.title}"
        }
    } else {
        return [error:"Did not return a proper response: ${resp.status}"]
    }
}