2011-12-08 4 views
2

Grails supports content negotiationGrailsのコンテンツネゴシエーションは、どのように対立するタイプを扱いますか? 3つの異なるソースからの

  1. Acceptヘッダー
  2. 要求パラメータは、よりからコンテンツ情報を取得するとき、それはやるん何(フォーマット)
  3. URI拡張子

質問があり、 1つの場所よりも、特に彼らがお互いに同意しない場合は? AcceptヘッダーをXMLに解決でしょう

URL: http://example.com/book/list.html?format=json 
Accept: application/xml 

、URIの拡張子がHTMLに解決だろう、とパラメータはJSONに解決します:Grailsのには、次のような要求を受け取った場合に何が起こるか例えば

、。

これは何をするでしょう:Grailsの2.0.0RC3については

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

答えて

5

を以下は、HTMLブロックを返します。

curl -v -H "Accept: application/xml" http://localhost:8080/book/book/list.html?format=json 

優先順位は次のとおりです。ヘッダーを受け入れる使用するために変更しなければならないこと

  1. URI拡張子
  2. フォーマット要求のparam
  3. Acceptヘッダーgrails-app/conf/Config.groovyファイルの次のパラメータ(デフォルトはfalse):

    grails.mime.use.accept.header = true 
    
関連する問題