Ответ 1
В методе ответа используется согласование содержимого для ответа на наиболее подходящий тип контента на основе заголовка запроса ACCEPT.
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8, application/json
Таким образом, потребитель вашего сайта может выбрать способ возврата данных. Это может быть не самый лучший вариант, если вы хотите принудительно установить определенный тип возврата. Например: вы создаете REST api и хотите вернуть json или xml, если пользователь запрашивает test.html, тогда они могут возвращать ваши данные в формате, который вы не хотите поддерживать. В противном случае ответ может быть простым способом поддержки нескольких форматов возврата без их программирования отдельно.
Render явно определяет формат, в котором вы хотите вернуть свои данные:
(Примеры из документации)
render Book.list(params) as JSON
render Book.get(params.id) as XML
// render with status code
render(status: 503, text: 'Failed to update book ${b.id}')
Дополнительная информация:
Ответ: http://grails.org/doc/latest/ref/Controllers/respond.html Render: http://grails.org/doc/latest/ref/Controllers/render.html