我是第一次使用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路由不会发生。
由于
答案 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}"]
}
}