web-dev-qa-db-ja.com

Grailsコントローラーのレンダリングメソッドのレンダリングと応答

Grailsコントローラーには別のレンダリング方法「応答」があることに気づきました。

コントローラでビューをレンダリングしたい場合、respondメソッドとrenderメソッドの違いは何ですか?.

29
ttt

応答メソッドは、コンテンツネゴシエーションを使用して、リクエストの '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

35
vesuvious