初探ASP.NET Web API
什么是ASP.NET Web API?
官方的解释是
ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.
意思是,ASP.NET Web API是一个框架,可以轻松构建HTTP服务,覆盖广泛的客户端,包括浏览器和移动设备。 ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。
那么RESTful又是什么?
简单的解释,RESTful属于一种设计风格,REST中的GET,POST,PUT DELETE来进行数据的增删改查,如果开发人员的应用程序符合RESTful原则,则它的服务称为"RESTful风格应用服务"。
创建一个ASP.NET Web API应用程序
下面我们就创建一个ASP.NET Web API应用程序,来演示一下ASP.NET Web API的基本用法。
这里我们为了方便快捷,我们直接在Visual Studio建立ASP.NET Web Application向导的下一个窗口中选择Web API。
当然如果你创建的是一个空的ASP.NET Web Application,那么就需要安装引用Microsoft ASP.NET Web API。

点击OK按钮,Visual Studio就为我们创建了使用Web API所需的基本文件以及应用程序所需的基本结构,在"Controllers"文件夹中有个名为ValuesController的Controller,这个Controller就是自动创建的一个默认Web API Controller。

我们打开ValuesController可以看到里面包含了基本的GET,POST,PUT和DELETE的HTTP请求方法。
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
} // GET api/values/5
public string Get(int id)
{
return "value";
} // POST api/values
public void Post([FromBody]string value)
{
} // PUT api/values/5
public void Put(int id, [FromBody]string value)
{
} // DELETE api/values/5
public void Delete(int id)
{
}
}
我们注意到上面代码中Post和Put方法参数中有一个关键字[FromBody],而Get和Delete方法则没有。事实上没有加[FromBdoy]就默认为[FromUri]。它们代表什么意思呢,[FromBody]表示由请求文件本体中取得数据,就像一般表单Post Sumbit一样。而[FromUri]则表示由URI中取得数据,就像网址中所带的参数一样。另外我们看到上面代码中绿色注释的部分就是不同请求的访问URI。
这里我们稍作修改,添加一些模拟数据以便更好的演示这四种不同方式的请求。
public class ValuesController : ApiController
{
// Set mock data
List<string> mockDataList = new List<string>()
{
"Product A","Product B","Product C","Product D","Product E"
}; // GET api/values
public IEnumerable<string> Get()
{
return mockDataList;
} // GET api/values/5
public string Get(int id)
{
return mockDataList[id];
} // POST api/values
public void Post([FromBody]string value)
{
mockDataList.Add(value);
} // PUT api/values/5
public void Put(int id, [FromBody]string value)
{
mockDataList[id] = value;
} // DELETE api/values/5
public void Delete(int id)
{
mockDataList.RemoveAt(id);
}
}
好了,运行程序,这里我们借助Fiddler,一个web调试代理工具。
1.Get方法获取所有数据

选择请求方式GET,输入请求地址后点击Execute按钮

如图所示,请求成功并返回了所有数据。
2.Get方法获取单个数据

选择请求方式GET,输入请求地址后点击Execute按钮

我们看到成功获取到了索引值为1的数据。
3.Post方法添加一条数据
由于是Post请求,所以我们需要在请求Header中加上Accept:application/xml 和Content-Type:application/json声明,并在请求的Body中加上你要添加的数值,这里我们添加一条数据"Product F"。

点击Execute按钮执行后,接着按照Get获取所有数据的方式执行。看看是否成功新增数据。

我们看到新增的数据"Product F"在所有数据列表中了。
4.Put修改一条数据
Put请求,同样我们需要在请求Header中加上Accept:application/xml 和Content-Type:application/json声明,并在请求的Body中加上你要修改的数值,这里我们修改列表下标索引值为0的数据为"Product AA"。

点击Execute按钮执行后,接着按照Get获取所有数据的方式执行。看看是否成功修改数据。

我们看到所要修改的数据成功修改为"Product AA"。
5.Delete删除一条数据
这里我们删除下标索引值为0的数据。

点击Execute按钮执行后,接着按照Get获取所有数据的方式执行。看看是否成功删除数据。

我们看到成功删除了下标索引值为0的数据。
好了,本篇就先到此,希望对你有所帮助,谢谢!
初探ASP.NET Web API的更多相关文章
- 初探ASP.NET Web API (转)
http://www.cnblogs.com/mejoy/p/6402821.html 什么是ASP.NET Web API? 官方的解释是 ASP.NET Web API is a framewor ...
- ASP.NET WEB API 初探
本文初步介绍如何简单创建一个ASP.NET Web Api 程序. Web Api 顾名思义就是一个Api接口,客户端可调用此接口进行业务操作.此类应用与 ASP.NET web服务(即使用扩展名. ...
- [转]ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)
本文转自:http://www.cnblogs.com/parry/p/ASPNET_MVC_Web_API_digest_authentication.html 在前一篇文章中,主要讨论了使用HTT ...
- ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)
在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...
- ASP.NET Web API(二):安全验证之使用HTTP基本认证
在前一篇文章ASP.NET Web API(一):使用初探,GET和POST数据中,我们初步接触了微软的REST API: Web API. 我们在接触了Web API的后就立马发现了有安全验证的需求 ...
- 初探.NET CORE WEB API(RESTful风格)
前面有4篇系列博客 (一)Asp.net web api中的坑-[找不到与请求 URI匹配的 HTTP 资源] (二)Asp.net web api中的坑-[http get请求中的参数] (三)As ...
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...
- ASP.NET Web API Model-ActionBinding
ASP.NET Web API Model-ActionBinding 前言 前面的几个篇幅把Model部分的知识点划分成一个个的模块来讲解,而在控制器执行过程中分为好多个过程,对于控制器执行过程(一 ...
- ASP.NET Web API Model-ParameterBinding
ASP.NET Web API Model-ParameterBinding 前言 通过上个篇幅的学习了解Model绑定的基础知识,然而在ASP.NET Web API中Model绑定功能模块并不是被 ...
随机推荐
- C++类的存储(部分可用与c的结构体)
c++中最重要的就是类,那么给你一个类的对象,你知道它在内存中如何存储的吗?它占内存中多少个字节? 首先确定类的构成: 1,数据成员:可以是内置类型,类类型. 2,函数成员:虚函数,非虚函数 1)数据 ...
- 最新的thinkphp 后台入口的问题
新的thinkphp后台入口绑定了单独了文件 admin.php 要注意.
- java判断是否为汉字
java判断是否为汉字 public static boolean isChinese(String str) { String regEx = "[\u4e00-\u9fa5]&quo ...
- 使用Python脚本操作MongoDB的教程
Reference: http://www.jb51.net/article/64225.htm
- margin的简单应用
今晚学了盒模型的marg部分,简单仿下京东的官网首页部分 第一次制作,尽管看来实在惨不忍睹,毕竟娘不嫌儿丑,之后多加努力吧,这几天尽量加快学习进度,能单独制作一张精美的网页最好 附上代码 <!D ...
- java中String相等问题
java中判断两个字符串是否相等的问题 判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在java中,用的是eq ...
- SpringMVC详解
来源:Sunnier(http://www.admin10000.com/document/6436.html) 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入Spr ...
- 内容页获取当前栏目的上一级栏目ID
发现V9在列表页可以用$parentid 得到当前栏目的父级ID,但在内容页这个函数的值却为空了,需要按下面的写法才行, V9 在内容页获取当前栏目的上一级栏目ID {$CAT[parentid]} ...
- Java经典案例之-“最大公约数和最小公倍数”
/** * 描述:输入两个正整数m和n,求其最大公约数和最小公倍数.(最大公约数:最大公约数, * 也称最大公因数.最大公因子,指两个或多个整数共有约数中最大的一个.) * (最小公倍数:几个数共有的 ...
- CSS中设置margin:0 auto; 水平居中无效的原因分析
很多初学制作网页的朋友,可能会遇到的一个常见问题,就是在CSS中加了margin:0 auto;却没有效果,不能居中的问题,margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应,其 ...