由于工作的原因,断断续续终于看完了《ASP.NET Web API 2 框架揭秘》第二章关于WebApi的路由系统的知识。

路由系统是请求消息进入Asp.net WebApi的第一道屏障,其根本目的利用注册的路由表对请求的URI进行解析以确定目标HttpController和Action的名称,以及与某个Action方法某个参数进行绑定的路由变量。

Asp.net webApi中的路由系统和Asp.net中的路由系统很相似,也有Route,只是WebApi的路由系统又独立于Asp.net的路由系统,实现类也在不同的命名空间下。所以在讲Asp.net WebApi路由之前先来谈谈Asp.net路由系统。

一、Asp.net 路由

Asp.net MVC的路由完全由 Asp.net路由系统来完成 ,但是后者并非专门为前者设计 ,其实它最初是为了帮助 WebForm应用实现 “请求地址与物理文件的分离” 而设计的。

 

1.1 请求Url与物理文件的分离:类似于www.xxx.com/default.aspx这类没有把url与物理地址分开的做法的局限性体现在一下几个方面,1.灵活性(物理文件路径发生变化,链接无效);2.可读性;3.SEO优化。

解决上面问题,URL路由系统,通过托管代码实现URL与物理文件的分离。

下面示例展示了通过URL路由实现请求地址与web页面的映射。示例地址:员工列表与员工信息示例

 1 namespace WebApp
 2 {
 3     public class Global : System.Web.HttpApplication
 4     {
 5         protected void Application_Start(object sender, EventArgs e)
 6         {
 7             var defaults = new RouteValueDictionary { { "name", "*" }, { "id", "*" } };
 8             RouteTable.Routes.MapPageRoute("", "employees/{name}/{id}","~/default.aspx", true, defaults);
 9         }
10     }
11 }
12       
Global

相关文章: