Web API是网络(即HTTP)的应用程序编程接口(API)。当程序的资源可以通过HTTP使用标准的HTTP方法GETPOSTPUT和DELETE操作时,就可以说这个应用程序支持web API,可以供其他应用程序使用。因为HTTP是平台无关的,所以HTTP服务可以被跨不同平台的不同设备使用。

HTTP服务的核心概念是存在的资源可以通过统一资源标识符(URI)标识。如果将资源比作名词,那么对资源的操作可以比作动词,这些操作表示HTTP方法,如Get POST PUT和DELETE。对于一个公司的雇员程序来讲,每个雇员都是程序要处理的资源。

我们来看一下HTTP服务是如何获取一个雇员详细信息的。URI [URL]包括雇员的ID并作为资源的标识符,本例中资源指的是一个雇员。对这个资源的操作是通过HTTP谓词完成的。获取一个雇员的详细信息,在URI [URL]上执行一个HTTP GET请求。更新这个雇员的信息,对这个URI上发送一个HTTP PUT请求。删除这个雇员,发送一个HTTP DELETE请求。创建一个新的雇员,发送一个HTTP POST不带标识符的请求([URL])。

HTTP服务使用HTTP状态码指示响应成功还是失败。例如,如果12345的雇员不存在,就会返回HTTP状态码404 – NOT found。如果请求成功,就会返回HTTP状态码200 – OK。

本例中的类通常继承自ApiController类,它是ASP.NET Web API框架的一部分。你需要做的就是创建一个ApiController的子类,例如EmployeesController,包含一个方法Get(int id)。ASP.NET Web API框架会路由所有的GET请求到这个方法,并URI中传递雇员ID作为参数。在该方法内部,你可以获取雇员详细信息,然后只返回Employee类型的一个对象即可。ASP.NET Web API框架会将employee对象序列化为JSON或XML。ASP.NET Web API支持内容协商:请求可以带有客户端期望的响应格式。Web API会尽可能的发送那种格式的响应。

带有消息的请求中,如POST,需要将方法定义为POST(Employee employee),有一个Employee类型的参数。ASP.NET Web API框架会反序列化请求(XML或JSON)为Employee对象。Web API是根据HTTP谓词路由一个请求到Action方法的。

ASP.NET MVC 4是作为Visual Studio 2012的一部分,Visual Studio 2010 SP1的扩展发行的。ASP.NET Web API是MVC 4.0的一部分。有一个叫做WEBAPI的新的项目模板可以用来创建Web API项目。还可以在同一个项目中有API和MVC两种路由器。