Grails controller rendering method render vs respond

巧了我就是萌 提交于 2019-12-04 15:13:09

问题


I just realised that for a Grails controller there is another rendering method 'respond'.

What's the difference between respond and render method if we want to render a view in the controller.


回答1:


The respond method uses content negotiation to respond with the most appropriate content type based on the requests 'ACCEPT' header.

Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8, application/json

This way the consumer of your site can choose how they wish to be returned data. This may not be the best option if you want to force a specific return type. For example: You are building a REST api and only want to return json or xml, if the user asks for test.html then they may be returned your data in a format that you do not wish to support. Otherwise respond can be an easy way to support multiple return formats without programming them each separately.

Render explicitly defines the format you wish to return your data in :

(Examples from documentation)

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}')

More information:

Respond: http://grails.org/doc/latest/ref/Controllers/respond.html Render:http://grails.org/doc/latest/ref/Controllers/render.html



来源:https://stackoverflow.com/questions/22601188/grails-controller-rendering-method-render-vs-respond

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!