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

  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/aizai846/p/10959306.html
Copyright © 2011-2022 走看看