WebAPI返回數據類型解惑

  最近開始使用WebAPI,上手很容易,而後有些疑惑html

  1.WebAPI默認返回什麼數據類型,json仍是xml?
  2.怎麼修改WebAPI的返回數據類型
,我用IE瀏覽器請求返回的數據都是JSON格式的,用Firefox和Chrome返回數據格式是XML,而後本身用HttpWebRequest請求返回的是JSON格式的,我就納悶了,咋一樣的程序、一樣的配置文件,輸出數據格式爲啥還帶不同的,就算你默認輸出json或者xml均可以理解,咋還不一樣瀏覽器,輸出格式不一樣,通過一番研總算搞懂了緣由chrome


  通過測試發現使用IE瀏覽器返回的數據是json,而使用Firefox和Chrome返回的則爲xml,經研究發現IE在發生http請求時請求頭accpet節點相比Firefox和Chrome缺乏"application/xml"類型,因爲WebAPI返回數據爲xml或json格式,IE沒有發送可接受xml和json類型,因此默認爲json格式數據,而Firefox和chrome則發送了可接受xml類型,故返回了xml數據,下面是IE、Firefox和Chrome瀏覽器的請求頭json

瀏覽器 返回數據格式 accept請求頭
IE json

text/html, application/xhtml+xml, */*瀏覽器

Firefox xml

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,*/*app

Chrome xml

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,*/*測試

     

繼續進行以下測試xml

1.只發送accept:application/json,結果返回了jsonhtm

2.只發送accept:application/xml,結果返回了xmlio

3.同時發送accept:application/xml,application/json,結果返回了jsontable

4.同時發送accept:application/json,application/xml,結果返回了json

5.修改優先級同時發送application/xml;q=1.0,application/json;q=0.9,結果返回了xml

由此能夠得出結論:

  WebAPI的返回數據類型是有請求頭的accept來決定的,默認返回類型爲json
    1.application/json和application/xml都沒有時,返回json數據
    2.僅有application/json時,返回json數據
    3.僅有application/xml時,返回xml數據
    4.同時有application/json和application/json時,返回數據類型和二者的順序無關,若二者優先級相同則返回json,若優先級不一樣則返回優先級高的類型

詳見下表:

Accept頭 返回類型
application/json json
application/xml xml
application/xml,application/json json
application/json,application/xml json
application/xml;q=1.0,application/json;q=1.0 json
application/xml;q=0.9,application/json;q=0.9 json
application/xml;q=1.0,application/json;q=0.9 xml
application/xml;q=0.9,application/json;q=1.0 json
相關文章
相關標籤/搜索