我正在寻找使用ASP.Net MVC作为基于REST的服务的平台.我知道WCF内置了对REST服务的支持;但是,我正在考虑根据请求返回多种类型的数据.
我希望客户端请求内容类型.因此,如果他们发送text / html例如我将我的模型渲染为Html,如果他们请求text / xml,它将返回xml.我们也可以做JSON.
有没有人看到这个问题?
不使用WCF会在调用服务时增加客户端的复杂性,因为它们无法自动生成代理;但是,就我而言,客户端将是浏览器请求html,或者是处理xml的java客户端库.
由于没有使用WCF,我们需要保护服务;但是,我想我们可以使用表单身份验证来完成此操作.
这样做的好处是,无论客户端请求什么类型的数据,它都通过相同的控制器/模型等…
解决方法
哈克的解决方案当然不是最好的解决方案,尽管这是一个很好的起点.
对于初学者,如果您正在使用实体框架(或者决定稍后从Linq切换到sql),JsonResult将会中断,因为它无法使用循环引用(通常是大多数数据模型)序列化对象图.其次,它为同一资源公开了多个端点.
执行此操作的正确方法是查看X-Requested-With HTTP标头以确定这是否是XHR请求.或Content-Type:XML的text / xml请求标头.
我建议您安装适用于模拟XHR请求的REST testing的Firefox插件. Tamper Data插件和其他一些插件可以更好地控制测试/调试. WFetch是一个直接的原始HTTP请求工具,对于测试和调试也很重要.
我为此做了一个JSON/POX action filter.您只需要使用[JsonPox]属性修饰类或方法,它们将根据客户端自动显示为JSON或XML.