作者:Parry 出处:http://www.cnblogs.com/parry/ 本文版权归我和天涯论坛共有,欢迎转发,但未经小编同意必须保留此段注脚,且在文章页面明显地方给出原文连接,不然保留追究法律义务的任务。


那是一篇新手入门的一篇尤其不错的篇章,强烈推荐!联系本人加微信:jkxx123321
要么关心微信公众号:爱享黑马


 

概述

REST(Representational State Transfer表述性状态转移)而发出的REST
API的座谈更是多,微软在ASP.NET中也添加了Web API的机能。

我们看dudu的文章HttpClient + ASP.NET Web API,
WCF之外的另多少个抉择
驾驭了网易也初步采取了Web
API,且在动用Web API Beta版本的时候境遇了这个难点:痴情意外:ASP.NET
WebAPI RAV4C
竟然不帮助最常用的json传参

我们刚刚看看Web API的运用,且看最近的版本有没有化解掉那些标题。

类型确立

在设置了Visual Studio
2013后,大家逐一点击新建项目->已设置模板->Web->ASP.NET MVC 4
Web Application新建2个工程项目。

图片 1

类别模板选取Web API。

图片 2

在Model里面大家照旧拉长从前作品里面使用的User类。

图片 3

 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 }

图片 4

将自动生成的ValueController修改成UsersController。

GET数据

采取HTTP的get方法请求获取数据,整个Web API的乞请处理依照MVC框架。

代码如下。

图片 5

 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 }

图片 6

结构了2个user list,达成了四个点子,大家下边来做请求。

行使不相同的浏览器请求的进度中会发现再次来到的格式不平等。

先使用Chrome请求,大家发现HTTP Header里面包车型大巴Content-Type是xml类型。

图片 7

咱俩再换FireFox请求,发现Content-Type照旧xml类型。

图片 8

作者们再接纳IE请求,发现是那般。

图片 9

打开保存后的文本,大家发现呼吁到的数目是JSON格式。

图片 10

致使这么的分化的缘故是:分化的浏览器发送的Request
Header里面包车型地铁Content-Type不等同导致的。

作者们能够动用Fiddler证雅培下。

Content-Type:text/json

图片 11

图片 12

Content-Type:text/xml

图片 13

图片 14

POST数据

达成四个User添加的效应,接受的体系为User实体,而小编辈POST的数量为相应的JSON数据,看看dudu在Beta版本的相遇的题材有没有化解。

图片 15

 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 }

图片 16

大家照旧使用Fiddler进行效仿POST数据。

在POST请求前,大家先将代码附加到进度之中,并在Add方法处设置断点。

在Visual Studio 二零一二中,debug HOST的程序成为了IIS Express。

图片 17

作者们运用Ctrl+ALT+P,附加到它的经过之中。

图片 18

上边接纳Fiddler进行模拟POST。

注意在Request Header里面的Content-Type为text/json,POST的json内容为:

1 {“UserID”:4,”UserName”:”Parry”,”UserEmail”:Parry@cnblogs.com}

图片 19

点击Execute后,跳到了大家眼前设置的断点处,我们看看提交过来的数量。

图片 20

如此dudu在Beta里面遭遇的难点已解。

结语

ASP.NET框架一路腾飞而来,的确意义做的一发强大、方便。希望大家能废除语言的争辩,回归纯粹的技术商讨上来,都说微软的技能生成太快,变的原形是怎么着吧?难道不变正是好的啊?

第叁部分我们将一块看一看Web API里面包车型地铁局地有惊无险申明的题材。

抱有错误之处,望提议、切磋。

欣赏的话,点个推荐是对小说最好的肯定。 🙂

相关文章

网站地图xml地图