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

  • 相关阅读:
    cookie包含中文导致的问题
    Mysql date_sub函数使用
    mysql 忘记root密码修改方法
    你所知道的Java单例模式并不是单例模式
    cookie与sessionID之间的关系实验
    Cookie实例,理解cookie
    spring项目中使用定时任务
    Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示
    Java 生成压缩包,ZipOutputStream的使用
    Spring的web应用启动加载数据字典方法
  • 原文地址:https://www.cnblogs.com/aizai846/p/10959306.html
Copyright © 2011-2022 走看看