Grails控制器渲染方法render vs respond

Posted

技术标签:

【中文标题】Grails控制器渲染方法render vs respond【英文标题】:Grails controller rendering method render vs respond 【发布时间】:2014-05-01 07:47:47 【问题描述】:

我刚刚意识到,对于 Grails 控制器,还有另一种渲染方法“响应”。

如果我们想在控制器中渲染视图,respondrender方法有什么区别。

【问题讨论】:

【参考方案1】:

respond 方法使用内容协商,根据请求的“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 渲染:http://grails.org/doc/latest/ref/Controllers/render.html

【讨论】:

以上是关于Grails控制器渲染方法render vs respond的主要内容,如果未能解决你的问题,请参考以下文章

Groovy/grails 如何使用 jquery 从视图中调用控制器方法

Grails - 从 Javascript 方法调用控制器和渲染模板

Grails:将模板渲染为字符串

我需要在 Grails 中返回“渲染”吗?

从 Grails 中的控制器渲染 json 视图

单元测试控制器方法?