WebAPI初探

摘要:
WebAPI的初步探索由于即将接管的新项目ASPNETMVC3,所以我最近一直在阅读相关书籍或文章。我记得读过Dudu网站管理员HttpClient+ASPNETWebAPI的一篇文章,这是WCF之外的另一个选项。对于我来说,我习惯于使用“html+ajax+general handler”开发项目,我认为这应该是处理数据请求的另一种更高端的方式。所以今天,让我们从这个“Web API的紧凑版本”开始。在下一篇文章中,让我们深入讨论如何调用Web API来请求后台数据!
WebAPI初探

由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章。因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主要还是开发WebForm的项目,所以MVC的东西也就逐渐的淡忘了。

经过这一段时间的系统学习,真的觉得MVC3相比于之前的MVC2还有WebForm来说,确实有一种让人欲罢不能爽歪歪的感觉。特别是Razor语法、Linq表达式等的结合运用。

为了将学习过程中遇到的一些值得留意的问题和知识点进行一个很好地整理,所以打算把对MVC的学习过程整理成一个文章系列,同时也希望能帮助那些初学ASP.NET MVC的童鞋们。可能文章的风格不会像其他文章那样讲的很深,主要还是通过实例来表达吧。由于自己也是初学,文章中难免有错误,也希望各位高手能够多多指教,大家共同学习。

好了,废话不多说,进入正题。

个人觉得在MVC中,路由规则算是比较重要的一点。记得之前曾看过dudu站长的一篇文章HttpClient + ASP.NET Web API, WCF之外的另一个选择,对于用惯了“html+ajax+一般处理程序” 来开发项目的我来说,觉得这应该算是另一种更加高端的处理数据请求的方式吧,所以,今天我们就从这种“精简版的WebAPI” 开始说起。

首先,先创建一个“ASP.NET 空Web应用程序” :

WebAPI初探第1张

然后添加对“System.Web.Http” 和 “System.Web.Http.WebHost” 的引用:

WebAPI初探第2张

再添加对“System.Net.Http” 的引用:

WebAPI初探第3张

由于需要用到对Json数据的处理,所以还要添加对“Newtonsoft.Json” 的引用。

这里需要注意一下:

如果开始不添加对“Newtonsoft.Json”的引用,在项目运行时就会报错,具体报错原因稍后再说。

对四个类库的引用:

WebAPI初探第4张

然后新建一个类,用于注册默认路由映射,这里类名为 WebAPIConfig :

WebAPI初探第5张

添加Global.asax文件,在Application_Start 方法中 初始化路由映射:

        protected void Application_Start(object sender, EventArgs e)
        {
            //在应用程序启动时注册路由映射
            WebAPIConfig.Register(GlobalConfiguration.Configuration);
        }

记得引入命名空间:

using System.Web.Http;

注意:

上面我们提到,如果开始时不引用“Newtonsoft.Json”,那么在运行时 注册路由映射这里就会报错:

WebAPI初探第6张

创建名为Controller的文件夹,然后添加一个类且类名以 Controller结尾,这里为UserController

WebAPI初探第7张

创建名为Model的文件夹用来存放实体类,添加Users类:

WebAPI初探第8张

在 UserController 类中,添加一个 GetUser() 方法,模拟一些数据:

复制代码
//引入命名空间
using System.Web.Http;
using X_1_FirstWebAPI.Model;
namespace X_1_FirstWebAPI.Controller
{
    public class UserController : ApiController
    {
        public List<Users> GetUser()
        {
            var userList = new List<Users> { 
            new Users{ Id=1,UName="张三",UAge=12,UAddress="海淀区"},
            new Users{Id=2,UName="李四",UAge=23,UAddress="昌平区"},
            new Users{Id=3,UName="王五",UAge=34,UAddress="朝阳区"}
            };
            var temp = (from u in userList
                        select u).ToList();
            return temp;
        }
    }
}
复制代码

我们之前添加的路由规则为"api/{controller}/{action}/{id}" ,所以,我们在浏览器中访问数据的url为 http://localhost:****/api/controllerName/actionName 的形式,在这里即是 api/user/getuser :

WebAPI初探第11张

OK,到这里,精简版的WebAPI项目就完成了,这个应该对于大部分.NET程序员来说理解起来是很简单的。

那下一篇文章我们就深入地来聊一聊如何调用WebAPI请求后台数据吧!

转载请注明出处。

免责声明:文章转载自《WebAPI初探》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇printf()函数不能直接输出string类型Windows 的 80 端口被 System 进程占用解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WebApi 部署后一直返回404的解决办法

Fixing ASP.NET MVC 4 Web API 404 Posted onNovember 5, 2012 For a Web Service providing some REST-style URIs to access the data, I decided to use theASP.NET MVC 4 Web API. Once...

thinkphp3.2.3中设置路由,优化url

需求:访问这个目录的时候,http://xx.com/p-412313要重定向到(暂且这么叫)http://xx.com/Home/Blog/index/id/412313 就是看着好看 我的应用目录是Application。模块是Home 第一步:知道哪个文件怎么处理的路由路由处理在think/Route.class.php [php]view p...

vue路由跳转页面的几种方式及其区别

场景:A页面跳转到B页面并携带参数 方案一:声明式导航router-link 1.1不带参数: // 注意:router-link中链接如果是'/'开始就是从根路由开始,如果开始不带'/',则从当前路由开始。 <router-link :to="{name:'home'}"> <router-link :to="{path:'/hom...

vue router:解决相同路径不同路由参数跳转同一页面,路由参数不动态刷新的问题

问题描述 当我们使用同一路径跳转不同页面时,路由参数不会刷新,所以组件中接收不到,比如我的路由定义和路由跳转链接如下:当然我们人为不肯直接这样写啦~这里模拟问题写的demo 采用 watch 监听 1. 在点击跳转的组件中使用 watch 进行检测动态改变路由参数: watch: { // 利用watch方法检测路由变化:进行重新赋值 $r...

Vue:vue-router编程式导航

声明式导航通过标签来实现页面跳转,编程式导航通过调用js的API来实现跳转,在vue中最常见的编程式导航API是push函数和go函数, 声明式导航:   通过命名路由的name属性,可以实现路由的导航和跳转 给路由规则加一个name属性,这样就变成一个命名路由了,这个命名路由可以帮助我们实现路由跳转,需要再to前面加一个属性绑定的冒号, to前面加一...

Asp.net WebApi 项目示例(增删改查)

1.WebApi是什么     ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务。ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。     可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟...