2012-02-28 68 views
-1

我正在開發一個第一次使用grails的restful webservice,我遵循grails文檔中的第13章來設置對GET請求的簡單響應。使用httpbuilder for grails restful webservice

我沒有得到的東西是設置HTTPBuilder創建一個客戶端,使得請求。我已經下載了罐子httpbuilder, REST風格的客戶端定義如下

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類中定義?如果是的話我們需要在哪裏定義這個類

現在URL的路由顯示def在我的控制器沒有發生。

感謝

回答

2

我不知道正是你正在嘗試做的,因爲我不知道你的本地主機服務應該返回做。由於您正在尋找書籍,因此以下是使用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}"] 
    } 
} 
+0

感謝您的洞察力,但我真的有關於上述代碼的基本問題。這是一堂課嗎?該項目放置了哪些文件/一段代碼以及與項目相關的地方?我已經下載了我的lib中的HttpBuilder.jar是否足夠?對不起,我經歷了這個文件,但它開始在一個水平,你知道很多事情.. – 2012-02-29 02:33:56

+1

好吧,看起來像你有一個loooong的方式去。您應該先仔細閱讀Grails和Groovy文檔。你可以從上面的代碼複製粘貼到[groovy console](http://groovy.codehaus.org/Groovy+Console),它會運行(不需要類)。不過,我認爲你應該先閱讀更多的文檔。 – Scott 2012-02-29 02:47:47