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

ASP.NET Web API 2系列(一):初识Web API及手动搭建基本框架的更多相关文章

  1. ASP.NET SingalR + MongoDB 实现简单聊天室(一):搭建基本框架

    ASP.NET SingalR不多介绍.让我介绍不如看官网,我这里就是直接上源代码,当然代码还是写的比较简单的,考虑的也少,希望各位技友多多提意见. 先简单介绍聊天室功能: 用户加入聊天室,自动给用户 ...

  2. 【Web缓存机制系列】2 – Web浏览器的缓存机制

    Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改).这些规则有的在协议中有定义(如HTTP协议1.0 ...

  3. 【Web缓存机制系列】2 – Web浏览器的缓存机制-(新鲜度 校验值)

    Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改).这些规则有的在协议中有定义(如HTTP协议1.0 ...

  4. ASP.NET Web API 2系列(二):灵活多样的路由配置

    1. 导言 路由系统是请求消息进入ASP.NET Web API消息处理管道的第一道屏障,其根本目的在于利用注册的路由对请求的URL进行解析以确定目标HTTPController和Action的名称, ...

  5. ASP.NET Web API 2系列(三):查看WebAPI接口的详细说明及测试接口

    引言 前边两篇博客介绍了Web API的基本框架以及路由配置,这篇博客主要解决在前后端分离项目中,为前端人员提供详细接口说明的问题,主要是通过修改WebApi HelpPage相关代码和添加WebAp ...

  6. ASP.NET Web API 2系列(四):基于JWT的token身份认证方案

    1.引言 通过前边的系列教程,我们可以掌握WebAPI的初步运用,但是此时的API接口任何人都可以访问,这显然不是我们想要的,这时就需要控制对它的访问,也就是WebAPI的权限验证.验证方式非常多,本 ...

  7. ABP架构学习系列三:手工搭建ABP框架

    由于公司的项目才接触到ABP这个框架,当时就觉得高大上,什么IOC.AOP.ddd各种专业词汇让人激情 澎湃,但在使用过程中碰到了许多坑,可能也许是没有去看源码导致的,但工作确实没有那么多时间让人去慢 ...

  8. ASP.NET Web API实践系列04,通过Route等特性设置路由

    ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...

  9. ASP.NET Web API实践系列07,获取数据, 使用Ninject实现依赖倒置,使用Knockout实现页面元素和视图模型的双向绑定

    本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据. 在Models文件夹下创 ...

随机推荐

  1. asp net core mvc 跨域ajax解决方案

    1.配置服务端 在Startup文件中国配置Cors策略: IEnumerable<Client> clients= Configuration.GetSection("Clie ...

  2. 1、pytest中文文档--安装和入门

    目录 安装和入门 安装pytest 创建你的第一个测试用例 执行多个测试用例 检查代码是否触发一个指定的异常 在一个类中组织多个测试用例 申请一个唯一的临时目录用于功能测试 安装和入门 Python版 ...

  3. 【Redis】SpringBoot整合Redis

    一.Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  4. 【Offer】[11] 【旋转数组的最小元素】

    题目描述 思路分析 Java代码 代码链接 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4, ...

  5. Markdown 直接转换公众号文章,不再为排版花时间

    上一篇「又一家数据公司被查,爬虫到底做错了什么?」反响强烈,虽然我这是新号,但还是获得了不少公众号的转发,借机也结识了很多业内大佬,在此感谢大家的抬爱! 同时也有不少号主问我的文章排版是用的哪个网站, ...

  6. FreeSql (三十一)分区分表

    分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中.把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,数据库不同实现方式有所不同. 与分表不同,一张大表进行 ...

  7. 5.Sentinel源码分析—Sentinel如何实现自适应限流?

    Sentinel源码解析系列: 1.Sentinel源码分析-FlowRuleManager加载规则做了什么? 2. Sentinel源码分析-Sentinel是如何进行流量统计的? 3. Senti ...

  8. 四大组件初始之Broadcast

    在进行应用设计时,需要获取很多环境参数,像电量,音量,亮度,网络等.相比较每次去询问android这些信息改变了吗.让Android告诉我们,这些信息改变了更加合理.只要这些信息改变,Android通 ...

  9. 新建web工程

    1.选择新建Dynamic  Web Project 2.选择服务器和版本(2.5) 3.WebContend目录下新建一个html文件 4.运行 工程的目录结构: WEB-INF目录时受保护的,不能 ...

  10. 06 (OC)* iOS中UI类之间的继承关系

    iOS中UI类之间的继承关系 此图可以更好的让你去理解iOS中一些底层的关系.你能够了解以及理解UI类之间的继承关系,你会更加明白苹果有关于底层的东西,更有助于你的项目开发由它们的底层关系,就能更加容 ...