WebAPI返回数据类型
最近開始使用WebAPI,上手很容易,然后有些疑惑
  1.WebAPI默認(rèn)返回什么數(shù)據(jù)類型,json還是xml?
  2.怎么修改WebAPI的返回?cái)?shù)據(jù)類型
,我用IE瀏覽器請求返回的數(shù)據(jù)都是JSON格式的,用Firefox和Chrome返回?cái)?shù)據(jù)格式是XML,然后自己用HttpWebRequest請求返回的是JSON格式的,我就納悶了,咋同樣的程序、同樣的配置文件,輸出數(shù)據(jù)格式為啥還帶不一樣的,就算你默認(rèn)輸出json或者xml都可以理解,咋還不同瀏覽器,輸出格式不同,經(jīng)過一番研總算搞懂了原因
  經(jīng)過測試發(fā)現(xiàn)使用IE瀏覽器返回的數(shù)據(jù)是json,而使用Firefox和Chrome返回的則為xml,經(jīng)研究發(fā)現(xiàn)IE在發(fā)生http請求時(shí)請求頭accpet節(jié)點(diǎn)相比Firefox和Chrome缺少"application/xml"類型,由于WebAPI返回?cái)?shù)據(jù)為xml或json格式,IE沒有發(fā)送可接受xml和json類型,所以默認(rèn)為json格式數(shù)據(jù),而Firefox和chrome則發(fā)送了可接受xml類型,故返回了xml數(shù)據(jù),下面是IE、Firefox和Chrome瀏覽器的請求頭
| 瀏覽器 | 返回?cái)?shù)據(jù)格式 | accept請求頭 | 
| IE | json | text/html, application/xhtml+xml, */* | 
| Firefox | xml | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,*/* | 
| Chrome | xml | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,*/* | 
| ? | ? | ? | 
繼續(xù)進(jìn)行如下測試
1.只發(fā)送accept:application/json,結(jié)果返回了json
2.只發(fā)送accept:application/xml,結(jié)果返回了xml
3.同時(shí)發(fā)送accept:application/xml,application/json,結(jié)果返回了json
4.同時(shí)發(fā)送accept:application/json,application/xml,結(jié)果返回了json
5.修改優(yōu)先級(jí)同時(shí)發(fā)送application/xml;q=1.0,application/json;q=0.9,結(jié)果返回了xml
由此可以得出結(jié)論:
  WebAPI的返回?cái)?shù)據(jù)類型是有請求頭的accept來決定的,默認(rèn)返回類型為json
    1.application/json和application/xml都沒有時(shí),返回json數(shù)據(jù)
    2.僅有application/json時(shí),返回json數(shù)據(jù)
    3.僅有application/xml時(shí),返回xml數(shù)據(jù)
    4.同時(shí)有application/json和application/json時(shí),返回?cái)?shù)據(jù)類型和兩者的順序無關(guān),若兩者優(yōu)先級(jí)相同則返回json,若優(yōu)先級(jí)不同則返回優(yōu)先級(jí)高的類型
詳見下表:
| 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 | 
| ? | ? | 
轉(zhuǎn)載于:https://www.cnblogs.com/eric-qin/p/5320940.html
總結(jié)
以上是生活随笔為你收集整理的WebAPI返回数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 图像非局部均值滤波的原理
- 下一篇: IIS7下使用urlrewriter.d
