Fork me on GitHub

ASP.NET Web API 2系列(一):初识Web API及手动搭建基本框架

 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,文中若有不足之处,还望海涵,博文写作不易希望多多支持,后续会更新更多内容,感兴趣的朋友可以加关注,欢迎留言交流!

posted @ 2019-06-03 21:33  码探长  阅读(8496)  评论(3编辑  收藏  举报