использование httpbuilder для grails restful webservice - PullRequest
0 голосов
/ 28 февраля 2012

Я разрабатываю полноценный веб-сервис с использованием Grails в первый раз и следую главе 13 документации Grails для настройки простого ответа на запрос 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?если да, то где нам нужно определить этот класс

В настоящий момент маршрутизация URL для отображения def в моем контроллере не происходит.

Спасибо

1 Ответ

2 голосов
/ 29 февраля 2012

Я не уверен, что именно вы пытаетесь сделать, так как я не знаю, что должна вернуть ваша служба 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}"]
    }
}
...