2012-08-16 85 views
1

具體而言,情況如下:請求可以包含一個以Content-Type標頭中指定的格式格式化的主體(POST或PUT) - 例如application/json。但是,URI包含格式命中格式不同(例如?_format=xmlresource_uri.xml),它通常用於表示響應格式。我在這裏看到的三種可能的解決方案:REST服務:格式化請求與響應的最佳做法是什麼?

  1. 請求的Content-Type被忽略,請求體被解析,如果是由URI表示的格式。
  2. 將忽略URI標記,並假定請求和響應的格式如Content-Type所定義。
  3. 請求正文根據Content-Type進行解析,響應的格式如URI所暗示。

就我個人而言,我喜歡第3種方法,但對格式的差異有點擔心。這裏通常的做法是什麼?以不同的格式提出請求和響應是否可以接受?如果不是,我寧願方法#1,而#2似乎完全關閉和不直觀。這裏有什麼建議?

回答

2

方法#3是三種方法中唯一的一種,也允許請求和響應採用不同的格式。這是一件好事,因爲請求通常是一種固定格式,而響應可以以客戶喜歡的任何支持格式呈現。

方法#1明顯濫用HTTP,絕不應​​該看到白天的光芒。

方法#2也很糟糕,因爲有一個不同的標頭,表示客戶期望的響應格式:Accept。簡而言之,您可以按照HTTP預期的方式(使用標頭Accept)執行此操作,或者通過允許在URL中內聯指定格式來爲客戶端提供一些便利。您也可以同時執行這兩個操作(如果Accept標頭指定了一種格式,則使用該格式,否則請檢查該URL)。

1

方法#3是好的,我會說你可以依靠Accept頭來確定響應格式。這樣,Content-Type標題設置請求格式,並且Accept標題或_format查詢參數設置響應格式。

相關問題