概述
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.Models2 {
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 Json2 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 的实例教程的细致内容,更多请关注ki4网别的相干文章!