#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-адрес должен быть чем-то вроде:
Комментарии:
1. ОК. но я хочу, чтобы контроллер обрабатывал как html, так и rest-запрос. Два в одном контроллере. возможно ли это?
2. я изменил тип содержимого заголовка на: ‘text / xml’, и теперь он работает нормально.
3. Использование заголовка content-type действительно является ключевым: см. grails.org/doc/1.3.7/guide /… . Может быть, вы можете описать это в правильном ответе?