登录  /  注册

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

零下一度
发布: 2017-06-23 15:12:04
原创
3041人浏览过

 

概述

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         /// 
14         /// User Data List
15         /// 

16         private readonly List _userList = new List
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 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 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 的实例教程的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号