ASP.NET Web API 基础篇1
ASP.NET Web API 直到我膝盖中了一箭【1】基础篇
无题
蓦然回首,那些年,我竟然一直很二。
小时候,读武侠小说的时候,看到那些猪脚,常常会产生一种代入感,幻想自己也会遭遇某种奇遇,遇到悬崖跳下去是不是有本“武林秘笈”在等着?长大以后也是一样,多少人梦着醒着都在想,没准哪一天自己也会成为“百万富翁”。打住!你不是“万中无一”,也没那么多没准!当然,有时候还需要一点运气。
生活了二十几年,想做的事不少,狠下心做成的当真没几件,想想并不是资质愚钝,而是缺乏想到做到的劲头。为什么会这样?也许这就是惰性!就像大学时候打算考一大堆什么证,可是刚开始总感觉时间如此充裕以至于完全可以先打打游戏,看看大片,听听音乐,等终于打开书本时才发现:没时间了!就像毕业后打算定期一篇博客园随笔,可是不知不觉“太监”了12个月了。
前些天我给自己买了一包烟,然后蹲坐在楼梯口,用食指有节奏的轻点腮帮子,抹了把唏嘘的胡渣,望着弥漫在眼前层层叠叠的烟圈,那么忧郁、迷茫、空洞,叹一句:“原来我已经毕业*个月了!时间真快!”其实,我知道是我太急于求成了。今天,我充满干劲的喊上一句:“我才毕业*个月!我还年轻,我有资本!”你说,我是不是很二?
闲话少扯……
1. 概述
顾名思义 ASP.NET Web API 是一个用于在 .NET Framework 上生成 Web API 的框架,Web API 可以理解为是一个基于 RESTful 的 Web 服务,而 IIS 承载的 WCF 服务是一个基于 SOAP 的 Web 服务。所谓 RESTful 就是满足 REST 原则的应用程序或设计。那什么是 REST 原则?要理解 REST 原则,我们先来理解一下 Representational State Transfer 这个词语到底是什么意思,每一个单词代表了什么涵义。
Representational 其实指的是“资源”,资源是一个有趣的概念实体,它可以是一个应用程序对象,可以是一条数据库记录,也可以是一个算法等等。在基于 RESTful 的 Web 服务中,每个资源都使用 URI 统一资源标识符(Universal Resource Identifier) 得到一个惟一的地址。资源本身都是方法调用的目标,它向客户端公开,通过 HTTP 协议标准方法 GET、PUT、POST 和 DELETE 处理和传输状态,即 State Transfer 状态转移。而我们都知道 HTTP 协议是一个无状态协议,也就是说 HTTP 协议对于事务处理没有记忆能力,如果后续需要处理前面的信息,则它必须重传。
这就意味着客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,另一方面服务器不需要先前信息时它的应答就较快,这十分适合云计算之类的环境,客户端可以缓存数据以改进性能,毕竟可能导致每次连接传送的数据量增大。
2. 创建一个 Web API 项目
在 Visual Studio 2012 中新建项目或添加新项目,然后在模板窗格中,选择已安装的模板和展开 Visual C# 节点。在 Visual C# 中,选择 Web。在项目模板的列表中,选择 ASP.NET MVC 4 Web 应用程序。在新的 ASP.NET MVC 4 项目对话框中,选择 Web API 并单击确定。
3. 添加模型和 Web API 控制器
ASP.NET Web API 可以自动序列化模型到 JSON、 XML 或一些其他格式,然后将序列化的数据写入到 HTTP 响应消息的正文。下面我们创建一个简单的“产品”模型:
Product.cs
Web API 控制器从 ApiController 类派生的控制器而不是 Controller 类。Web API 控制器上的操作不会返回视图,它们返回的是数据。在示例 WebAPI 控制器 ValuesController.cs 中定义了5个操作,每个操作映射到一个 URI,客户端可以通过发送 HTTP GET 请求的 URI 来调用该操作。
ValuesController.cs
4. 注册 Web API全局配置(路由默认值)
MVC Web 应用程序使用 Global.asax 文件中的代码来设置全局 URL 路由默认值,并且使用 Web.config 文件来配置应用程序。路由在 Global.asax 文件的 Application_Start 方法中初始化。那么,Web API GlobalConfiguration 呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/// <summary> /// 应用程序启动 /// </summary> protected void Application_Start() { Register(GlobalConfiguration.Configuration); // 注册全局配置 } /// <summary> /// 注册全局配置 /// </summary> /// <param name="config">使用 HTTP 路由集合初始化的 HTTP 配置</param> public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi" , routeTemplate: "api/{controller}/{id}" , defaults: new { id = RouteParameter.Optional } ); config.EnableSystemDiagnosticsTracing(); } |
于是,启动调试添加监视:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public HelpController() : this (GlobalConfiguration.Configuration) { } public HelpController(HttpConfiguration config) { Configuration = config; } /// <summary> /// System.Web.Http.HttpServer 实例的配置 /// </summary> public HttpConfiguration Configuration { get ; private set ; } |
5. 使用浏览器调用 Web API
在 Visual Studio 中,选择启动调试或使用键盘快捷键 F5。本地 IIS Web 服务器 IIS Express 将启动,并随机选择生成的端口号。当然也可以在项目属性中,选择 Web 中配置服务器和 URL。
使用 F12 开发人员工具,单击网络选项卡,然后按开始捕获 HTTP 请求和响应。如下分别向“api/values/”和“api/values/id”发生请求。
6. 使用 Javascript 和 jQuery 调用 Web API
其实,大部分 Web API 都要由客户端应用程序以编程方式调用的。如下使用 JQuery getJSON 函数向“api/values”发送一个 AJAX 请求,响应包含的 JSON 对象的数组。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
@section scripts { < script > var apiUrl = 'api/values'; $(document).ready(function () { //发送 AJAX 请求 $.getJSON(apiUrl) //done 函数指定如果请求成功,则调用的回调 .done(function (data) { $.each(data, function (key, item) { $('< li >', { text: item.Name + ': $' + item.Price }).appendTo($('#div')); }); }); }); </ script > } |
作者:依信依誉
出处:http://www.cnblogs.com/lhp0704/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
ASP.NET Web API 基础篇1的更多相关文章
- ASP.NET Web API 直到我膝盖中了一箭【1】基础篇
蓦然回首,那些年,我竟然一直很二. 小时候,读武侠小说的时候,看到那些猪脚,常常会产生一种代入感,幻想自己也会遭遇某种奇遇,遇到悬崖跳下去是不是有本“武林秘笈”在等着?长大以后也是一样,多少人梦着醒着 ...
- JavaScript跨域调用、JSONP、CORS与ASP.NET Web API[共8篇]
[第1篇] 同源策略与JSONP 浏览器是访问Internet的工具,也是客户端应用的宿主,它为客户端应用提供一个寄宿和运行的环境.而这里所说的应用,基本是指在浏览器中执行的客户端JavaScript ...
- asp.net web api 2.2 基础框架(带例子)
链接:https://github.com/solenovex/asp.net-web-api-2.2-starter-template 简介 这个是我自己编写的asp.net web api 2.2 ...
- 从头编写 asp.net core 2.0 web api 基础框架 (1)
工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...
- 【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)
工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...
- 从头编写asp.net core 2.0 web api 基础框架 (5) + 使用Identity Server 4建立Authorization Server (7) 可运行前后台源码
前台使用angular 5, 后台是asp.net core 2.0 web api + identity server 4. 从头编写asp.net core 2.0 web api 基础框架: 第 ...
- ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API
本篇尝试在现有的ASP.NET MVC 4 项目上增加使用ASP.NET Web API. 新建项目,选择"ASP.NET MVC 4 Web应用程序". 选择"基本&q ...
- 从头编写 asp.net core 2.0 web api 基础框架 (3)
第一部分:http://www.cnblogs.com/cgzl/p/7637250.html 第二部分:http://www.cnblogs.com/cgzl/p/7640077.html 之前我介 ...
- 从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置
第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分 ...
随机推荐
- 【译】使用requestIdleCallback
原文地址:http://galen-yip.com/2015/10/07/%E3%80%90%E8%AF%91%E3%80%91%E4%BD%BF%E7%94%A8requestIdleCallbac ...
- crawler_如何从页面获取新浪cookie
步奏如下: 1 用chrome浏览器(其他浏览器原理相同)打开地址: http://weibo.com/ 2.点击鼠标右键 右键点击查看元素 点击Network 3.输入用户名 密码 执行登录 ...
- php_PHP与Mysql的连接
展示效果: 繁写: <?php echo "This is a test</br>"; echo "asdfasdfadsf"; ...
- C# 使用摄像头拍照 支持Win7 64位
原文:C# 使用摄像头拍照 支持Win7 64位 So, how do we capture an image from a WebCam? Once you download the source ...
- 【高德地图API】从零开始学高德JS API(五)路线规划——驾车|公交|步行
原文:[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 先来看两个问题:路线规划与导航有什么区别?步行导航与驾车导航有什么区别? 回答: 1.路线规划,指的是为用户提供3 ...
- MacOS10.9平台配置Appium+Java环境
1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- 又一次拾起C语言的威严
自从用了C++,他的方便快捷一直用着屡试不爽,可是越用越认为程序不够清晰, 项目使用DSP,不得不把C++重写成C 速度没得说,很快 记录下看到的文章 少走弯路,学好C语言的推荐途径
- vs2005中的WebBrowser控件的简单应用
原文:vs2005中的WebBrowser控件的简单应用 这个控件被封装了一下,和以前的调用方式稍有不同.事件还是那几个,变化不大.方法变了不少.从网上能查到的资料不多,贴出一些代码来作参考.看看这段 ...
- IOS程序启动的过程
IOS程序启动按照以下5个步骤执行 1.main函数 IOS程序启动首先执行main函数 2.UIApplicationMain 执行main函数中的UIApplicationMain函数,这个函数会 ...
- MongoDB集群
高可用的MongoDB集群 1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l 面向集合的存储:适合存储 ...