Запрос Grails Rest

#rest #grails #request

#rest #grails #запрос

Вопрос:

У меня есть этот контроллер:

  def list = {

        withFormat {

            xml { render Customer.list() as XML }

            html {
                params.max = Math.min(params.max ? params.int('max') : 10, 100)
                [customerInstanceList: Customer.list(params), customerInstanceTotal: Customer.count()]
            }
        }

    }
  

Который в основном показывает мне всех клиентов на моей веб-странице, но он также предназначен для отображения в виде xml для ответа rest. Я использую WizTools Rest Client 2.33 для вызова метода list через rest. Что здесь происходит, так это то, что если я вызываю контроллер через браузер, все работает нормально, и все клиенты перечислены как html на странице. Если я вызываю его через rest, в ответ я получаю тот же отображаемый код HTML-страницы. В приведенном выше коде я попытался удалить html-часть, и таким образом ответ rest будет таким, какой я ожидаю (xml). Итак, я думаю, что чего-то может не хватать, потому что контроллер не может распознать запрос rest. Буду признателен за любую помощь.

Ответ №1:

Способ работы с форматом заключается в рассмотрении, за неимением лучшего термина, расширения action. Если вы хотите возвращать xml вместо html, ваш URL-адрес должен быть чем-то вроде:

http://localhost/app/customer/list.xml

Комментарии:

1. ОК. но я хочу, чтобы контроллер обрабатывал как html, так и rest-запрос. Два в одном контроллере. возможно ли это?

2. я изменил тип содержимого заголовка на: ‘text / xml’, и теперь он работает нормально.

3. Использование заголовка content-type действительно является ключевым: см. grails.org/doc/1.3.7/guide /… . Может быть, вы можете описать это в правильном ответе?