2009-12-09 93 views
1

我正在開發一個REST CodeIgniter控制器,需要POST和PUT到多種格式的URL。確定REST POST/PUT請求格式

我能想到的主要格式將是:

  • XML
  • JSON
  • HTML表單數據

會有在URI例如所定義的響應格式/ format/xml或/ format/csv。 我不想在URI中定義請求格式。

我想知道如果任何人有找出請求格式,所以我的腳本就可以完成請求的任何建議。

我想有可能獲得來自請求頭「內容類型」這個數據?

  • 「內容類型:文本/ xml」 的XML =
  • 「內容類型:application/JSON」= JSON
  • 「內容類型:文本/無格式」= HTLM表格數據**我想!*

這種方法是健壯的還是有更好的方法呢?

謝謝。

+0

HTML表單數據:在HTML 4.01規範說,它應作爲'應用程序/ x-WWW的形式urlencoded':http://www.w3.org/TR/html401/interact /forms.html#h-17.13.4.1 – Boldewyn

回答

2

的內容類型是爲了得到你想要的信息的正確方法的內容類型。

只要確保拋出異常並帶有一些反饋和正確的http錯誤代碼(如果客戶端調用的格式不正確或未傳遞內容類型標頭)(您也可以假定一種內容類型爲默認值)

而且,你真的沒有使用格式/ format_of_the_response。更好的方法是使用標頭接受與使用標頭內容的方式相同

+0

謝謝,我想我會考慮使用接受標題呢!希望我可以從jquery窗體中設置標題,絕對更優雅 – th3hamburgler

2

那種方法,只要強大的,你知道你的REST客戶端將按照您的內容類型的規則。如果你控制客戶端,那麼這很好。如果你不控制客戶端,那麼當一個不尋常的(或不是)內容類型被傳入時,調用失敗的可接受程度如何?

哦,參考HTML表單數據具有「應用/的X WWW的形式,進行了urlencoded」

+1

謝謝,他們想出了那個活潑的字符串:-) – th3hamburgler