Asp.net mvc 4 为什么我们需要MVC中的web API?什么';mvc中restful api的缺点是什么?

Asp.net mvc 4 为什么我们需要MVC中的web API?什么';mvc中restful api的缺点是什么?,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,我不熟悉ASP.NET Web API。谁能告诉我 为什么我们需要Web API 它与rest完整api和MVC有何不同 何时使用MVC4WebAPI MVC中的restful api是什么 WCF团队在微软与MVC团队合并。WCF并没有消失,但对于简单的RESTFUL服务调用,MVC控制器是天作之合,对它的修改允许非常简单的Web API 虽然我们中的许多人觉得WCF相对容易,但也有很多人害怕它,或者没有时间去学习它,因此他们不喜欢WCF。仍然使用ASMX,b。仍然没有采用的服务,或者现在使

我不熟悉ASP.NET Web API。谁能告诉我

  • 为什么我们需要Web API
  • 它与rest完整api和MVC有何不同
  • 何时使用MVC4WebAPI
  • MVC中的restful api是什么

WCF团队在微软与MVC团队合并。WCF并没有消失,但对于简单的RESTFUL服务调用,MVC控制器是天作之合,对它的修改允许非常简单的Web API

虽然我们中的许多人觉得WCF相对容易,但也有很多人害怕它,或者没有时间去学习它,因此他们不喜欢WCF。仍然使用ASMX,b。仍然没有采用的服务,或者现在使用的Web API,都是c。非常激动的是,他们可以非常轻松地启动并运行RESTfulWeb服务


因此,这实际上是一个舒适度、适应性、改变能力的问题,而Web API确实有它的位置。它不能取代WCF,因为WCF具有高级配置,具有所有绑定和执行SOAP而不仅仅是REST的能力,许多应用程序仍然需要SOAP协议。

WebAPI基于MVC,但有一些细微的区别。您需要了解WebAPI与MVC是分开的,不需要MVC。您可以单独安装WebAPI,也可以从默认MVC模板中卸载它

的确,微软可以将WebAPI直接构建到MVC控制器中,但他们选择将API控制器与MVC控制器分开,因为它们处理请求和响应的方式确实不同

您可以在WebAPI中执行MVC中无法(或至少不那么容易)执行的操作示例包括:

  • 内容协商
    • 这允许调用客户端选择返回数据的格式,如XML或JSON
  • 小田支援
    • 这允许调用者在服务器上“过滤”结果,而无需服务方法专门支持它。例如,如果您想按名字对结果进行排序,那么只需指定OData查询参数即可
WebAPI提供了处理数据结果集的强大功能。MVC不提供这种功能

您倾向于将WebAPI用于Ajax请求或不需要WCF复杂性的基于web服务的请求


RESTful API并不特定于MVC或WebAPI。它们只是在服务中如何设计HTTP请求的一种理念。真的有很多,但我不想谈

MVC经过优化,可向web浏览器客户端提供信息。如果你的客户是其他的,那么从长远来看,WebAPI会让你的生活变得更轻松


WebAPI是对Web堆栈从头开始的重写。从核心来看,它比MVC建立在其上的12年基础设施更干净、更灵活。Web API还没有与MVC相同级别的工具、附加组件和插件,但这一点将会到来。

我不同意WCF是“容易的”。当然,创建一个简单的服务是非常容易的,但是WCF有太多的“陷阱”,并且有一个超越基础的陡峭的学习曲线。例如,忽略自签名证书这样简单的事情需要经历很多困难。身份验证问题也会产生很多问题。对于一个成熟的SOA来说,WCF是有意义的,因为它为此提供了大量的功能,但对于简单的AJAX支持来说,这是一种过火的方式。更不用说,休息也不是那么容易。这一次我支持@MystereMan。WCF是非常强大的,但我不认为绑定是容易的或总是直观的,尤其是对于像传输安全性的用户凭据这样的场景。有时候,合同/强类型结果+合同有一种甜蜜的气氛,但很多时候,它的杀伤力过大,调试通常比简单的restful调用困难得多。“相对容易”是关键,而不是“容易”,但重点不在于我的WCF谈话,因为这仅仅是一个比较点,我清楚地继续说,Web API确实有它的位置,“c.非常激动(人们)可以非常轻松地使用restful Web服务启动和运行”,因此我谨慎地选择了我的话,因为许多人仍然在使用ASMX,一些人没有使用WCF,因为他们有理由不采用它,然后,为了简化restful而跳上Web API的人群。@everyone“或现在使用Web API的人都是c。非常兴奋他们可以很容易地使用restful Web服务启动和运行。“Web API只使用restful。ApiController类来自System.Web.Http,而它是新的,它是IHttpController和IDisposable实现的一部分。如果不是在我的答案中聊天,而是每个人都创建自己的答案,那么OP可能会得到最好的服务。谢谢