1.导言
随着Web技术的发展,现在各种框架,前端的,后端的,数不胜数。全栈工程师的压力越来越大。 PC端,pad端,移动端App(安卓/IOS)的发展,使得前后端一体的开发模式十分笨重。因此,前后端分离是web发展的趋势,其中,RESTful API是目前前后端分离的最佳实践,ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。Web API应用如下图所示。
2.ASP.NET Web API介绍
ASP.NET Web API是一个框架,可以轻松构建HTTP服务,覆盖广泛的客户端,包括浏览器和移动设备。 ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。其中,RESTful属于一种设计风格,REST中的GET,POST,PUT DELETE来进行数据的增删改查,如果开发人员的应用程序符合RESTful原则,则它的服务称为"RESTful风格应用服务"。
ASP.NET Web API核心的消息处理管道独立于ASP.NET平台,比Asp.NET MVC设计的管道更为复杂,功能也更为强大,支持Web Host和Self Host(任意类型的应用程序,如控制台、Windows Form应用程序、WPF应用甚至Windows Service)两种寄宿方式,本文主要介绍第一种方式。Web API整个生命周期如下图所示。
3.手动搭建基本框架
Visual Studio为我们提供了专门用于创建ASP.NET Web API应用的项目模板,借助于此项目模板提供的向导,我们可以“一键式”创建一个完整的ASP.NET Web API项目。在项目创建过程中,Visual studio会自动为我们添加必要的程序集引用和配置,甚至会为我们自动生成相关的代码,总之—句话:这种通过向导生成的项目在被创建之后其本身就是—个可执行的应用。笔者在此就不在演示自动创建的过程,重点讲解手动搭建,这样可以让我们更深入的了解Web API的运行原理。
(1)创建空的ASP.NET Web 应用程序
在VS2017中,选择ASP.NET Web 应用程序(.NET Framework),框架选择.NET Framework4.5,如下图所示。
选择空项目,同时去掉MVC及Web API选项,如下图所示。
(2)通过NuGet下载安装Microsoft.Asp.Net.Api
右键项目,选择【管理 NuGet 程序包】,搜索WebAPI,选择Microsoft.Asp.Net.Api,点击右侧【安装】按钮,完成安装,如下图所示。
(3)添加全局应用程序类Global.asax
右键项目,添加新建项,选择全局应用程序类,如下图所示。
global.asax是一个文本文件,它提供全局可用代码。这些代码包括应用程序的事件处理程序以及会话事件、方法和静态变量。有时该文件也被称为应用程序文件。打开文件,代码如下所示,发现该文件包含了Web应用程序入口Application_Start,这和WinForm应用程序的main函数类似。
namespace MyWebAPI { public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { } protected void Session_Start(object sender, EventArgs e) { } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { } protected void Session_End(object sender, EventArgs e) { } protected void Application_End(object sender, EventArgs e) { } } }
(4)注册Web API路由
路由系统是请求消息进入ASP.NET Web API 消息处理管道的第一道屏障,其根本目的用于解析URL请求,在后续的系列文章中会详细讲解,这里就不深入讲解。
在Application_Start函数中注册Web API路由,代码如下:
protected void Application_Start(object sender, EventArgs e) { GlobalConfiguration.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }); }
(5)添加Web API控制器
右键项目,添加新建项,选择Web API控制器类,如下图所示。
打开ValuesController.cs文件,发现该类直接继承与ApiController,且包含了GET,POST,PUT DELETE等Action,代码如下所示,控制器在后续系列文章中会详细讲解,这里也不过讲解。
public class ValuesController : ApiController { // GET api/<controller> public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/<controller>/5 public string Get(int id) { return "value"; } // POST api/<controller> public void Post([FromBody]string value) { } // PUT api/<controller>/5 public void Put(int id, [FromBody]string value) { } // DELETE api/<controller>/5 public void Delete(int id) { } }
(6)调用Web API
运行程序(自动创建IIS服务),在地址栏中输入http://localhost:52317/api/Values调用了ValuesController中的Get()方法,Google浏览显示的调用结果如下所示。
4.总结
至此,完成了ASP.NET Web API的基本介绍和手动构建Web API基本框架的详细步骤。通过此博客读者可以更加深入的认识和了解Web API,文中若有不足之处,还望海涵,博文写作不易希望多多支持,后续会更新更多内容,感兴趣的朋友可以加关注,欢迎留言交流!