将asp.net mvc用于基于REST的端点

Jos*_*rke 5 .net asp.net rest asp.net-mvc web-services

我正在寻找使用ASP.Net MVC作为基于REST的服务的平台.我知道WCF内置了对REST服务的支持; 但是,我正在考虑根据请求返回多种类型的数据.

我希望客户端请求内容类型.因此,如果他们发送text/html例如我将我的模型渲染为Html,如果他们请求text/xml,它将返回xml.我们也可以做JSON.

有没有人看到这个问题?

不使用WCF会在调用服务时增加客户端的复杂性,因为它们无法自动生成代理; 但是,就我而言,客户端将是浏览器请求html,或者是处理xml的java客户端库.

由于没有使用WCF,我们需要保护服务; 但是,我想我们可以使用表单身份验证来完成此操作.

这样做的好处是,无论客户端请求什么类型的数据,它都通过相同的控制器/模型等...

Jos*_*rke 2

在阅读了 Haack 的关于使用扩展来指示内容类型的文章后,我认为您最好关闭接受标头。对我来说似乎更安静,尽管启动浏览器并测试你的网址有点困难。

我一起完成了一篇关于执行此操作并使用 ModelBinder 从控制器中抽象出 HttpContext 的小博客文章:http://jberke.blogspot.com/2009/03/aspnet-mvc-model-binder.html

此外,为了响应 Troy 的选择加入评论,我使用该视图来渲染模型的 Xml。这使得我可以为同一模型使用不同的 xml 格式。这是有道理的。如果您需要支持不同客户端的版本控制或不同格式该怎么办?我不喜欢框架自动渲染任何内容的想法。