Grailsは、次の3つの異なるソースからのコンテンツネゴシエーションをサポートしています。
- ヘッダーを受け入れる
- リクエストパラメータ(フォーマット)
- URI拡張
問題は、複数の場所からコンテンツ情報を取得する場合、特にそれらが互いに同意しない場合、それは何をするのかということです。
たとえば、Grailsが次のようなリクエストを受け取った場合はどうなりますか。
URL: http://example.com/book/list.html?format=json
Accept: application/xml
Acceptヘッダーはxmlに解決され、URI拡張はhtmlに解決され、パラメーターはjsonに解決されます。
これは何をしますか:
import grails.converters.*
class BookController {
def list() {
def books = Book.list()
withFormat {
html bookList: books
xml { render books as XML }
json { render books as JSON }
}
}
}