MVC4 WebAPI(一)(转)
出处:http://www.cnblogs.com/wk1234/archive/2012/04/28/2468491.html
不管是因为什么原因,结果是在新出的MVC中,增加了WebAPI,用于提供REST风格的WebService,个人比较喜欢REST风格的WebService,感觉比SOAP要轻量级一些,而且对客户端的要求也更少,更符合网络数据传输的一般模式,客户端完全摆脱了代理和管道来直接和WebService进行交互,具体的区别可以参见Web 服务编程,REST 与 SOAP
(一)环境准备
本机的环境是XP+VS2010,需要安装VS2010 SP1升级包,MVC4升级包,Vs2010安装SP1后会影响SQLServer2008的自动提示功能,需要在安装补丁或插件,安装成功后可以新建如下的 MVC WebAPI 项目
aaarticlea/png;base64,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p59+2nlOSkoKuIFbUVGRn5/fhAkThm58tBx66tSpioqKF198MSwsLDU11blIo9F8+OGHLBZrsD4EBgYymUyCIBgMxp/+9Kfly5cHBATU1dXt3bt33rx57777rp+f39CbMKBD/fz8vvzyy+nTp//yl78EDt2wYcMDHZqQkODn5/fnP/95qL1GEARBnD9//qmnnvLz8wsMDLTb7Q+sP64DHerZPLkOJQiij0P7ZCw4lCCIM2fODO3Qf//732B68eLF7e3tFArl6tWrBEGIRKJvv/32gZswoEN///vfg2P5oKCghz2WH45DCYJ47rnnCIJYvXq1yWQaTv3xG+hQz+aJc+hHH3305ptvOkonTpwYERFBEASbzZ44cWJ1dbVjWWeHcrnciRMnVlX97GHoo+XQ7u7uf/3rX15eXuvXrweP5CwoKJg4caJarSYI4syZM88999wf/vCH/gsKhcKDBw9+9tln4OXixYsnTpw4Y8YMcOw/EoeePHny2WefDQoKAt+HLl++fOLEiWB733///YkTJ06cOJFKpYJG1q5dC+ZcvHiR+LlDU1JSJk6cOOD3CWDnh4WFgd3y/fffT5w40VE68X6MRmP/t2Z8BTrUs/Fwhz777LMpKSnh4eG//e1vCYI4fPhwTU2NWq3eunUrcX8cum7dOoPBQBDEkSNH+Hy+Y1lnh7711lsUCsUhX5BR/E3pk08+MRqNa9euBS8/+ugjCoXy0ksvEffHoWazefXq1X2WEggES5cufffdd2k0GnF/HOooHYlDwW9KPj4+ERERYBz661//2jEOfeONNwiCAONfKpV65coVCoWya9cu0KbDoXa7fcqUKRQK5de//nX/VYNxqKOrJ0+epFAor732GkEQBw8epFAoN2/ezM/PJwhi8uTJFAoFrHQ8BjrUs4EOHZZDX3311atXr4JjZEcenUMnT57sWN3QDv3vf/979erVF154gRhVh/r4+IBjecf3oYM5tLKy8vTp0857xtmhH3zwQf/9BuLsUJVKdfz48atXrwKH3r59++rVq9nZ2aD0T3/602CNjItAh3o2T5ZDLRbLf//7308//RR8B+fl5TVp0qQbN2709PTw+fzf/OY3f/zjHwmCiImJmTRpEihNSEggCCIvL2/SpEmTJk1ybvzROTQhIcGxujNnzvzhD3/44IMPgOid88orrxw4cIAgiKeeemrS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" alt="" />
(二)概览
新生成的WebAPI项目和典型的MVC项目一样,包含主要的Models,Views,Controllers等文件夹和Global.asax文件
aaarticlea/png;base64,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" alt="" />
Views对于WebAPI来说没有太大的用途,Models中的Model主要用于保存Service和Client交互的对象,这些对象默认情况下会被转换为Json格式的数据进行传输,Controllers中的Controller对应于WebService来说是一个Resource,用于提供服务。和普通的MVC一样,Global.asax用于配置路由规则
(三)Models
和WCF中的数据契约形成鲜明对比的是,MVC WebAPI中的Model就是简单的POCO,没有任何别的东西,如,你可以创建如下的Model
public class TestUseMode
{
public string ModeKey{get;set;}
public string ModeValue { get; set; } }
注意:Model必须提供public的属性,用于json或xml反序列化时的赋值
(四)Controllers
MVC WebAPI中的Controllers和普通MVC的Controllers类似,不过不再继承于Controller,而改为继承API的ApiController,一个Controller可以包含多个Action,这些Action响应请求的方法与Global中配置的路由规则有关,在后面结束Global时统一说明
(五)Global
默认情况下,模板自带了两个路由规则,分别对应于WebAPI和普通MVC的Web请求,默认的WebAPI路由规则如下
1 routes.MapHttpRoute(
2 name: "DefaultApi",
3 routeTemplate: "api/{controller}/{id}",
4 defaults: new { id = RouteParameter.Optional }
5 );
可以看到,默认路由使用的固定的api作为Uri的先导,按照微软官方的说法,用于区分普通Web请求和WebService的请求路径:
Note: The reason for using "api" in the route is to avoid collisions with ASP.NET MVC routing. That way, you can have "/contacts" go to an MVC controller, and "/api/contacts" go to a Web API controller. Of course, if you don't like this convention, you can change the default route table.
可以看到,默认的路由规则只指向了Controller,没有指向具体的Action,因为默认情况下,对于Controller中的Action的匹配是和Action的方法名相关联的:
具体来说,如果使用上面的路由规则,对应下面的Controller:
public class TestController : ApiController
{
public static List<TestUseMode> allModeList = new List<TestUseMode>(); public IEnumerable<TestUseMode> GetAll()
{
return allModeList;
} public IEnumerable<TestUseMode> GetOne(string key)
{
return allModeList.FindAll((mode) => { if (mode.ModeKey.Equals(key)) return true; return false; });
} public bool PostNew(TestUseMode mode)
{
allModeList.Add(mode);
return true;
} public int Delete(string key)
{
return allModeList.RemoveAll((mode) => { if (mode.ModeKey == key) return true; return false; });
} public int DeleteAll()
{
return allModeList.RemoveAll((mode) => { return true; });
} public int PutOne(string key, string value)
{
List<TestUseMode> upDataList = allModeList.FindAll((mode) => { if (mode.ModeKey == key) return true; return false; });
foreach(var mode in upDataList)
{
mode.ModeValue = value;
}
return upDataList.Count;
}
}
则,会有下面的对应关系:
aaarticlea/png;base64,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" alt="" />
简单使用JS调用上面提供的数据接口
1 function getAll() {
2 $.ajax({
3 url: "api/Test/",
4 type: 'GET',
5 success: function (data) {
6 document.getElementById("modes").innerHTML = "";
7 $.each(data, function (key, val) {
8 var str = val.ModeKey + ': ' + val.ModeValue;
9 $('<li/>', { html: str }).appendTo($('#modes'));
10 });
11 }
12 }).fail(
13 function (xhr, textStatus, err) {
14 alert('Error: ' + err);
15 });
16 }
17
18
19
20 function add() {
21
22 $.ajax({
23 url: "api/Test/",
24 type: "POST",
25 dataType: "json",
26 data: { "ModeKey": document.getElementById("txtKey").value, "ModeValue": document.getElementById("txtValue").value },
27 success: function (data) {
28 getAll();
29 }
30 }).fail(
31 function (xhr, textStatus, err) {
32 alert('Error: ' + err);
33 });
34
35 }
36
37 function find() {
38
39 $.ajax({
40 url: "api/Test/" + document.getElementById("txtFindKey").value,
41 type: 'GET',
42 success: function (data) {
43 document.getElementById("modes").innerHTML = "";
44 $.each(data, function (key, val) {
45 var str = val.ModeKey + ': ' + val.ModeValue;
46 $('<li/>', { html: str }).appendTo($('#modes'));
47 });
48 }
49 }).fail(
50 function (xhr, textStatus, err) {
51 alert('Error: ' + err);
52 });
53 }
54
55 function removeAll() {
56 $.ajax({
57 url: "api/Test/",
58 type: 'DELETE',
59 success: function (data) {
60 document.getElementById("modes").innerHTML = "";
61 getAll();
62 }
63 }).fail(
64 function (xhr, textStatus, err) {
65 alert('Error: ' + err);
66 });
67 }
68
69 function remove() {
70 $.ajax({
71 url: "api/Test/"+document.getElementById("txtRemoveKey").value,
72 type: 'DELETE',
73 success: function (data) {
74 document.getElementById("modes").innerHTML = "";
75 getAll();
76 }
77 }).fail(
78 function (xhr, textStatus, err) {
79 alert('Error: ' + err);
80 });
81 }
82
83 function update() {
84 $.ajax({
85 url: "api/Test/",
86 type: 'PUT',
87 dataType: "json",
88 data: { "key": document.getElementById("txtUpdateKey").value, "value": document.getElementById("txtUpdateValue").value },
89 success: function (data) {
90 document.getElementById("modes").innerHTML = "";
91 getAll();
92 }
93 }).fail(
94 function (xhr, textStatus, err) {
95 alert('Error: ' + err);
96 });
97 }
这样就实现了最基本的CRUD操作。
(六)路由规则扩展
和普通的MVC一样,MVC WebAPI支持自定义的路由规则,如:在上面的操作中,路由规则使用
"api/{controller}/{id}"
则限定了使用GET方式利用URL来传值时,controller后面的接收参数名为id,但是在Controller中,GetOne方法的接收参数名为key,是不会被匹配的,这是只需要新增一个新的路由规则,或修改原先的路由规则为:
"api/{controller}/{key}"
当然,可以对路由进行更深的扩展,如:扩展成和普通MVC一样的路由:
"api/{controller}/{action}/{id}"
这样,就要求同时使用Action和HTTP方法进行匹配
当然,根据微软的说法,这种使用是不被推荐的,因为这不符合大家对WebService的一般认知:
For a RESTful API, you should avoid using verbs in the URIs, because a URI should identify a resource, not an action.
(七)使用Attribute声明HTTP方法
有没有感觉默认的使用方法名来匹配HTTP Method的做法很傻??或者我有一些方法是自己用的,不想暴露出来,又该怎么办?还是使用attribute做这些工作感觉优雅一些,比如,上面的Action我可以更改为:
[HttpGet]
public IEnumerable<TestUseMode> FindAll() [HttpGet]
public IEnumerable<TestUseMode> FindByKey(string key) [HttpPost]
public bool Add(TestUseMode mode) [HttpDelete]
public int RemoveByKey(string key) [HttpDelete]
public int RemoveAll() [HttpPut]
public int UpdateByKey(string key, string value) [NonAction]
public string GetPrivateData()
当然,我只列出了方法名,而不是这些方法真的没有方法体...方法体是不变的,NoAction表示这个方法是不接收请求的,即使以GET开头。
如果感觉常规的GET,POST,DELETE,PUT不够用,还可以使用AcceptVerbs的方式来声明HTTP方法,如:
[AcceptVerbs("MKCOL", "HEAD")]
public int UpdateByKey(string key, string value)
{
List<TestUseMode> upDataList = allModeList.FindAll((mode) => { if (mode.ModeKey == key) return true; return false; });
foreach(var mode in upDataList)
{
mode.ModeValue = value;
}
return upDataList.Count;
}
******************************************************************************
作者:王坤
出处:http://www.cnblogs.com/wk1234
本文版权归 王坤和博客园共有,欢迎转载,但请注明出处。
MVC4 WebAPI(一)(转)的更多相关文章
- CentOS Mono Nginx 部署 MVC4+WebApi
CentOS Mono Nginx 部署 MVC4+WebApi 经过几天的折磨,终于在CentOS上成功部署了MVC4+WebApi.Mono上的服务器推荐两种:Jexus(国产高人写的一款很牛的服 ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(四)授权代码维护
一.前言 权限系统设计中,授权代码是用来控制数据访问权限的.授权代码说白了只是一树型结构的数据,没有什么其它的业务意义.那么这个页面的功能也就非常简单授权代码维护:新增.修改.删除授权代码数据. 二. ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(三)图形化机构树
一.前言 组织机构是国内管理系统中很重要的一个概念,以前我们基本都是采用数据列表的形式展现,最多只是采用树形列表展现.虽然够用,但是如果能做成图形化当然是最好不过了.这里我不用任何图形控件,就用最原始 ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航
一.前言 上篇博客中已经总体的说了一下权限系统的思路和表结构设计,那接下来我们就要进入正文了,先从菜单导航这个功能开始. 二.实现 这个页面基本不用什么需求分析了,大家都很明白,不过在这个页面要多维护 ...
- mvc4 web-api 与unity搭建接口
对于接口重要的应该是 功能实现,合法性验证,性能监控,日志等模块 通过unity aop功能可以实现统一的日志模块和性能监控. 1.新建mvc4 webapi项目 nuget添加 unity 3.0+ ...
- IOS5开发-http get/post调用mvc4 webapi互操作(图片上传)[转]
IOS5开发-http get/post调用mvc4 webapi互操作(图片上传) 目前最流行的跨平台交互是采用http协议通过JSON对象进行互操作.这种方式最简单,也很高效.webservi ...
- MVC4 + WebAPI + EasyUI + Knockout-授权代码维护
我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(四)授权代码维护 一.前言 权限系统设计中,授权代码是用来控制数据访问权限的.授权代码说白了只是一树型结构的数据 ...
- 权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout
权限系统设计实现MVC4 + WebAPI + EasyUI + Knouckout (一) 一.前言 之前的博客一直都还没写到框架的实现及权限系统,今天开始写我的权限系统,我以前做过的项目基本上都有 ...
- MVC4 WebAPI中如何返回一张图片
public HttpResponseMessage Get(string imageName, int width, int height) { Image img = GetImage(image ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(一)
一.前言 之前的博客一直都还没写到框架的实现及权限系统,今天开始写我的权限系统,我以前做过的项目基本上都有权限管理这个模块,但各个系统都会有一些不太一样,有些简单点,有些稍微复杂一点,一句话,我们做的 ...
随机推荐
- Java中的自动类型转换/隐式类型转换
整型.实型(常量).字符型数据可以混合运算.运算中,不同类型的数据先转化为同一类型,然后进行运算. 转换从低级到高级. 自动类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: sho ...
- json用法常见错误
Json用法三个常见错误 net.sf.json.JSONException: java.lang.NoSuchMethodException
- Nginx压力测试工具之WebBench
Nginx压力测试工具之WebBench 在Apache中有自带的ab命令可以测试服务的压力,而nginx没有自带的命令,必须要采用第三方软件来测试,今天就简单介绍一下webbench对nginx ...
- ffmpeg源码分析四:transcode_step函数 (转4)
原帖地址:http://blog.csdn.net/austinblog/article/details/25099979 该函数的主要功能是一步完整的转换工作,下面看看源代码: static int ...
- 杀死 ps grep 出来的所有进程
ps -ef |grep HouseList_Day |awk
- iOS设计模式(01):观察者
iOS设计模式(01):观察者 iOS-Observer-Pattern 什么是观察者模式 什么是观察者模式?你曾经订阅过报纸吗?在订阅报纸的时候,你不用去任何地方,只需要将你的个人地址信息以及订阅信 ...
- SPI子系统分析之四:驱动模块
内核版本:3.9.5 SPI控制器层(平台相关) 上一节讲了SPI核心层的注册和匹配函数,它是平台无关的.正是在核心层抽象了SPI控制器层的相同部分然后提供了统一的API给SPI设备层来使用.我们这一 ...
- 机器学习模型数据结构:logistic regression, neural network, convolutional neural network
可以用两种方式来看神经网络,一种就是层的集合,也就是层组成的数组,另一种是神经元的集合,也就是神经元组成的Graph. 基于神经元的实现方式中,需要定义两个类 Neuron, Weight Neuro ...
- 类似jQuery的原生JS封装的ajax方法
一,前言: 前文,我们介绍了ajax的原理和核心内容,主要讲的是ajax从前端到后端的数据传递的整个过程. Ajax工作原理和原生JS的ajax封装 真正的核心就是这段代码: var xhr = ne ...
- ubuntu18.04 安装显卡驱动
1.使用PPA仓库进行自动化安装 sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt update 2.查询所有u ...