文档详情

asp_net_mvc4_web_api_的最新讲解极其详细介绍.docx

发布:2020-10-08约1.35万字共21页下载文档
文本预览下载声明
不管是因为什么原因,结果是在新出的 MVC中,增加了 WebAP,用于提供REST风格的 WebService,个人 比较喜欢REST风格的WebService,感觉比SOAP要轻量级一些,而且对客户端的要求也更少,更符合网络 数据传输的一般模式,客户端完全摆脱了代理和管道来直接和 WebService进行交互,具体的区别可以参见 Web服务编程,REST与SOAP (一)环境准备 本机的环境是XP+VS2O10需要安装VS2010 SP1升级包,MVC軒级包,Vs2010安装SP1后会影响 SQLServer2008的自动提示功能,需要在安装补丁或插件,安装成功后可以新建如下的 MVC WebAPI项目 (二) 概览 新生成的 WebAPI项目和典型的 MVC项目一样,包含主要的 Models, Views, Controllers 等文件夹和文件 Views对于 WebAPI来说没有太大的用途,Models中的Model主要用于保存 Service和Client交互的对象, 这些对象默认情况下会被转换为 Json格式的数据进行传输, Controllers 中的Controller 对应于 WebService来说是一个Resource,用于提供服务。和普通的 MV(一样,用于配置路由规则 (三) Models 和WCF中的数据契约形成鲜明对比的是, MVCWebAPI中的Model就是简单的POCO没有任何别的东西,女口, 你可以创建如下的 Model public class TestUseMode { public string ModeKey{get ; set ;} public string ModeValue { get ; set ; } } 注意:Model必须提供public的属性,用于json或xml反序列化时的赋值 (四) Controllers MVCWebAPI中的Controllers 和普通 MVC的Controllers 类似,不过不再继承于 Controller ,而改为继承 API的ApiController ,一个Controller 可以包含多个 Action,这些 Action 响应请求的方法与 Global中 配置的路由规则有关,在后面结束 Global时统一说明 (五)Global 默认情况下,模板自带了两个路由规则,分别对应于 WebAPI和普通MVC的Web请求,默认的 规则如下 ( name: DefaultApi, routeTemplate: api/{controller}/{id} , defaults: new { id = } ); 可以看到,默认路由使用的固定的 api作为Uri的先导,按照微软官方的说法,用于区分普通 WebService的请求路径: Note: The reason for using api in the route is to avoid collisions with MVC routing. you can have /contacts go to an MVCcontroller, and /api/contacts go to a WebAPI Of course, if you dont like this convention, you can change the default route table. 可以看到,默认的路由规则只指向了 Controller ,没有指向具体的 Action,因为默认情况下, Cont⑹ler 中的Action的匹配是和 Action的方法名相关联的: 具体来说,如果使用上面的路由规则,对应下面的 Controller : 朿 public class TestController : ApiController { public static ListTestUseMode allModeList = new ListTestUseMode(); public IEnumerableTestUseMode GetAll() { return allModeList; } public IEnumerableTestUseMode GetOne( string key) { WebAP I路由Web WebAP I路由 Web请求和 That way, controller. 对于 public bool PostNew(TestUseMode mode) { (mode); return true ; } public int Delete( string key) return ((mode) = { if == key) return true ; return false
显示全部
相似文档