什么是WebAPI?为什么要用WebAPI?
1、关于API
应用程序接口(API,Application Programming Interface)是基于编程语言构建的结构,使开发人员更容易地创建复杂的功能。它们抽象了复杂的代码,并提供一些简单的接口规则直接使用。
简言之,API是一系列接口函数,它是模块内部能够对外提供的功能的封装。使用者不需要关心内部实现细节,只需要了解如何调用API,就可以利用其功能为自身应用服务了。
2、关于WebAPI
Web API是一个比较宽泛的概念。这里我们提到Web API特指ASP.NET Web API。
WebAPI 是一种用来开发系统间接口、设备接口 API 的技术,基于 Http 协议,请求和返回格式结果默认是 json 格式。比 WCF 更简单、更通用,比 WebService 更节省流量、更简洁。
WebAPI可以认为是WebService和WCF的演进版本,是随着移动互联网的发展而发展起来的,轻量化的,可用于前后端分离的一种数据封装和传递方式。前端可以通过WebAPI访问后端数据,实现灵活的前后端分离。
3、为什么要用WebAPI
Web API最重要的是可以构建面向各种客户端的服务。另外与WCF REST Service不同在于,Web API利用Http协议的各个方面来表达服务(例如 URI/request response header/caching/versioning/content format),因此就省掉很多配置。
4、WebAPI可以干什么
支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作
通过不同的http动作表达不同的含义,这样就不需要暴露多个API来支持这些基本操作。
请求的回复通过Http Status Code表达不同含义,并且客户端可以通过Accept header来与服务器协商格式,例如你希望服务器返回JSON格式还是XML格式。
请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。
原生支持OData。
支持Self-host或者IIS host。
支持大多数MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。
5、WebAPI vs MVC
MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据
Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式
Web API支持Self Host,MVC目前不支持
Web API通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作
Web API内建于http://ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,因此model binding/filter/routing等功能有所不同
Web API非常适合构建移动客户端服务
6、WebAPI vs WCF
如果服务需要支持One Way Messaging/Message Queue/Duplex Communication,选择WCF
如果服务需要在TCP/Named Pipes/UDP (wcf 4.5),选择WCF
如果服务需要在http协议上,并且希望利用http协议的各种功能,选择Web API
如果服务需要被各种客户端(特别是移动客户端)调用,选择Web API
拓展阅读: