初探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请求方法。

复制代码
 1     public class ValuesController : ApiController
 2     {
 3         // GET api/values
 4         public IEnumerable<string> Get()
 5         {
 6             return new string[] { "value1", "value2" };
 7         }
 8 
 9         // GET api/values/5
10         public string Get(int id)
11         {
12             return "value";
13         }
14 
15         // POST api/values
16         public void Post([FromBody]string value)
17         {
18         }
19 
20         // PUT api/values/5
21         public void Put(int id, [FromBody]string value)
22         {
23         }
24 
25         // DELETE api/values/5
26         public void Delete(int id)
27         {
28         }
29     }
复制代码

我们注意到上面代码中PostPut方法参数中有一个关键字[FromBody],而GetDelete方法则没有。事实上没有加[FromBdoy]就默认为[FromUri]。它们代表什么意思呢,[FromBody]表示由请求文件本体中取得数据,就像一般表单Post Sumbit一样。而[FromUri]则表示由URI中取得数据,就像网址中所带的参数一样。另外我们看到上面代码中绿色注释的部分就是不同请求的访问URI

这里我们稍作修改,添加一些模拟数据以便更好的演示这四种不同方式的请求。

复制代码
 1     public class ValuesController : ApiController
 2     {
 3         // Set mock data
 4         List<string> mockDataList = new List<string>()
 5         {
 6             "Product A","Product B","Product C","Product D","Product E"
 7         };
 8 
 9         // GET api/values
10         public IEnumerable<string> Get()
11         {
12             return mockDataList;
13         }
14 
15         // GET api/values/5
16         public string Get(int id)
17         {
18             return mockDataList[id];
19         }
20 
21         // POST api/values
22         public void Post([FromBody]string value)
23         {
24             mockDataList.Add(value);
25         }
26 
27         // PUT api/values/5
28         public void Put(int id, [FromBody]string value)
29         {
30             mockDataList[id] = value;
31         }
32 
33         // DELETE api/values/5
34         public void Delete(int id)
35         {
36             mockDataList.RemoveAt(id);
37         }
38     }
复制代码

好了,运行程序,这里我们借助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的数据。

好了,本篇就先到此,希望对你有所帮助,谢谢!

发表评论

电子邮件地址不会被公开。 必填项已用*标注