先看看如何手动指定返回格式。WebGetAttribute和WebInvokeAttribute有RequesetFormat和ReponseFormat两个属性,可以指定请求/返回格式为XML或者JSON:
![image_thumb43entity,我的WCF4 Rest Service及Entity Framework with POCO之旅(二)——选择请求/返回格式](/Files/20113/56a8b1d0-2f46-4b53-83a4-308968b806ca.png)
但相比之下,动态选择格式还是更灵活也吸引人一些。打开之前创建的项目,在自动生成的web.config中,有这么一条配置:
设定标准Endpoint为打开服务帮助,并且打开自动格式选择。
打开服务帮助就是当访问/microblogs/help时会看到如下的帮助界面:
![image_thumb35image_thumb43entity,我的WCF4 Rest Service及Entity Framework with POCO之旅(二)——选择请求/返回格式](/Files/20113/79f0fb69-407f-4093-bdab-dff9e7654b1e.png)
列举了服务的接口,每个接口还说明了其详细用法、示例,以及请求/返回数据的scheme。
而自动格式选择,分为两部分:自动根据请求,选择请求内容的格式和回复内容的格式。这两者分别是通过HTTP请求头中的Content-Type和Accept这两项指定的。
在Fiddler2中把Content-Type改成application/json, 表示请求的内容格式是JSON,再次发布一条微博:
![image_thumb37image_thumb35image_thumb43entity,我的WCF4 Rest Service及Entity Framework with POCO之旅(二)——选择请求/返回格式](/Files/20113/b65c5500-e546-418c-ae7c-0343db23af5e.png)
请求成功,可以看到请求内容是JSON格式,服务器成功处理了,但返回还是XML格式:
![image_thumb38image_thumb37image_thumb35image_thumb43entity,我的WCF4 Rest Service及Entity Framework with POCO之旅(二)——选择请求/返回格式](/Files/20113/e96881e2-02f0-4c8f-956b-22edb46876ad.png)
现在再修改Accept头为application/json, 表示只接受JSON的返回格式,然后获取所有的微博:
![image_thumb39image_thumb38image_thumb37image_thumb35image_thumb43entity,我的WCF4 Rest Service及Entity Framework with POCO之旅(二)——选择请求/返回格式](/Files/20113/7f99e164-b938-47cd-9ced-e4a28097539d.png)
结果如下:
![image_thumb40image_thumb39image_thumb38image_thumb37image_thumb35image_thumb43entity,我的WCF4 Rest Service及Entity Framework with POCO之旅(二)——选择请求/返回格式](/Files/20113/519a0904-6ad0-4598-95a6-068c073a132f.png)
可以看到,返回内容已经是JSON格式了。等等,那个时间的格式好像有点怪?另外,大写的field名称似乎也不合习惯。别急,我们以后会解决这些问题。
小结
本文介绍了- 如何手动指定请求/返回的数据格式
- 如何使用WCF的自动格式选择
我的WCF4 Rest Service及Entity Framework with POCO之旅系列
- 我的WCF4 Rest Service及Entity Framework with POCO之旅(一)——创建一个基本的RESTful Service
- 我的WCF4 Rest Service及Entity Framework with POCO之旅(二)——选择请求/返回格式
最新评论