关于webapi 返回的类型的笔记
2014-07-10 11:12
148 查看
经过测试发现使用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浏览器的请求头
继续进行如下测试
1.只发送accept:application/json,结果返回了json
2.只发送accept:application/xml,结果返回了xml
3.同时发送accept:application/xml,application/json,结果返回了json
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请求头 |
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,*/* |
1.只发送accept:application/json,结果返回了json
2.只发送accept:application/xml,结果返回了xml
3.同时发送accept:application/xml,application/json,结果返回了json
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 |
相关文章推荐
- 关于监听方法的返回类型
- 关于C++中const & 返回类型的一些看法
- FLEX学习笔记:TileList点击到不同的部分,返回的event.target类型
- 关于C#间接继承的一些思考:如何修改继承函数的返回值类型
- 关于C函数声明与定义返回类型不一致的解释
- jdbc笔记四,关于数据类型
- MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
- 关于指针数组指针做为返回类型的函数
- 关于jquery中ajax数据返回类型问题
- MySQL学习笔记_关于MySQL的整数类型字段长度知识总结
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- 学习笔记——关于C#中的两个short类型相加变成了int类型
- iPhone开发入门笔记(三)—关于数据类型介绍 (NSObject)
- 关于$query=mysql_query($query);返回的是什么类型的值的问题的理解
- 学习笔记:关于PL/SQL 集合类型record、pl/sql表、varray、nested table
- 关于函数的返回值是一个接口类型的对象
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- 学习笔记:关于Firefox中jQuery.ajax()返回Xml Document
- 关于函数返回类类型可否作为左值