2014-09-21 89 views
1

某些媒體類型是其他媒體類型的擴展。這種媒體類型通常使用+來表示它的名稱。例如,application/atom + xml擴展了通用xml,application/hal + json擴展了通用json。內容協商和擴展媒體類型

我的問題是:如果客戶端請求通用媒體類型並且服務器想用其中一種擴展媒體類型進行響應,應該如何處理?例如,如果要求有頭Accept: application/json和服務器要使用的應用程序/ HAL + JSON,應在服務器迴應...

  1. ...提供一個純簡JSON與Content-type: application/json,即不要是否包含_links_embedded?這就是客戶要求的,這就是它得到的。如果你想要HAL,就問問它。

  2. ...傳遞HAL表示與Content-type: application/json? HAL,畢竟是IS JSON,這就是客戶要求的。客戶很高興,可以忽略它不理解的位。

  3. ...傳遞HAL表示與Content-type: application/hal+json?像2.一樣,客戶端得到它想要的,並可以忽略它不理解的位。但也有一個線索,客戶可以從表示中獲得更多。

我的偏好是3.但是有沒有一個規範,最佳實踐或常用的方法,可以提供指導是最好的選擇?

回答

1

服務器可能會執行這三個操作中的任何一個,或者如果它不願意以默認表示形式進行響應,它可能會用406 Not Acceptable進行響應。

參見:http://tools.ietf.org/html/rfc7231#section-6.5.6

+1

感謝您的鏈接,以RFC 7231.我已經太久抱住我的精心翻閱RFC 2616的打印輸出我只是把它扔和印刷本和它的同伴。現在,如果我可以停止粘住紙張:-) – biscuit314 2014-09-22 14:08:43