您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 延边分类信息网,免费分类信息发布

操作 ASP.NET Web API 的实例教程

2024/2/21 23:46:28发布23次查看
概述rest(representational state transfer表述性状态转移)而产生的rest api的讨论越来越多,微软在asp.net中也添加了web api的功能。
我们刚好看看web api的使用,且看目前的版本有没有解决掉这个问题。
项目建立在安装了visual studio 2012后,我们依次点击新建项目->已安装模板->web->asp.net mvc 4 web application新建一个工程项目。
项目模板选择web api。
在model里面我们还是添加之前文章里面使用的user类。
1 namespace webapi.models
 2 {
 3     public class users
 4     {
 5         public int userid { get; set; }
 6 
 7         public string username { get; set; }
 8 
 9         public string useremail { get; set; }
10     }
11 }
将自动生成的valuecontroller修改成userscontroller。
get数据使用http的get方法请求获取数据,整个web api的请求处理基于mvc框架。
代码如下。
1 using system;
 2 using system.collections.generic;
 3 using system.linq;
 4 using system.net;
 5 using system.net.http;
 6 using system.web.http;
 7 using webapi.models;
 8 
 9 namespace webapi.controllers
10 {
11     public class userscontroller : apicontroller
12     {
13         /// <summary>
14         /// user data list
15         /// </summary>
16         private readonly list<users> _userlist = new list<users>
17         {
18             new users {userid = 1, username = superman, useremail = superman@cnblogs.com},
19             new users {userid = 2, username = spiderman, useremail = spiderman@cnblogs.com},
20             new users {userid = 3, username = batman, useremail = batman@cnblogs.com}
21         };
22 
23         // get api/users
24         public ienumerable<users> get()
25         {
26             return _userlist;
27         }
28 
29         // get api/users/5
30         public users getuserbyid(int id)
31         {
32             var user = _userlist.firstordefault(users => users.userid == id);
33             if (user == null)
34             {
35                 throw new httpresponseexception(httpstatuscode.notfound);
36             }
37             return user;
38         }
39 
40         //get api/users/?username=xx
41         public ienumerable<users> getuserbyname(string username)
42         {
43             return _userlist.where(p => string.equals(p.username, username, stringcomparison.ordinalignorecase));
44         }
45     }
46 }
构造了一个user list,实现了三个方法,我们下面来做请求。
使用不同的浏览器请求的过程中会发现返回的格式不一样。
先使用chrome请求,我们发现http header里面的content-type是xml类型。
我们再换firefox请求,发现content-type还是xml类型。
我们再使用ie请求,发现是这样。
打开保存后的文件,我们发现请求到的数据是json格式。
造成这样的差异的原因是:不同的浏览器发送的request header里面的content-type不一致造成的。
我们可以使用fiddler验证一下。
content-type:text/json
content-type:text/xml
post数据实现一个user添加的功能,接受的类型为user实体,而我们post的数据为对应的json数据,看看dudu在beta版本的遇到的问题有没有解决。
1 //post api/users/users entity json
 2 public users add([frombody]users users)
 3 {
 4     if (users == null)
 5     {
 6         throw new httprequestexception();
 7     }
 8     _userlist.add(users);
 9     return users;
10 }
我们还是使用fiddler进行模拟post数据。
在post请求前,我们先将代码附加到进程里面,并在add方法处设置断点。
在visual studio 2012中,debug host的程序变成了iis express。
我们使用ctrl+alt+p,附加到它的进程里面。
下面使用fiddler进行模拟post。
注意在request header里面的content-type为text/json,post的json内容为:
1 {userid:4,username:parry,useremail:parry@cnblogs.com}
点击execute后,跳到了我们前面设置的断点处,我们看看提交过来的数据。
这样dudu在beta里面遇到的问题已解。
结语asp.net框架一路发展而来,的确功能做的越来越强大、方便。希望我们能摒弃语言的争论,回归纯粹的技术讨论上来,都说微软的技术变化太快,变的本质是什么呢?难道不变就是好的吗?
第二部分我们将一起看一看web api里面的一些安全验证的问题。
有所错误之处,望指出、讨论。
喜欢的话,点个推荐是对文章最好的肯定。 :)
以上就是操作 asp.net web api 的实例教程的详细内容。
延边分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录