[水煮 ASP.NET Web API2 方法论](3-4)设置路由可选项

问题

怎么样创建一个路由,不管客户端传不传这个参数,都可以被成功匹配。

 

解决方案

ASP.NET WEB API 的集中式路由和属性路由都支持路由声明可选参数。

 

在用集中式路由中可以通过 RouteParameter.Optional 指定一个可选参数,RouteParameter.Optional 等同于MVC 中的 UrlParameter.Option。

 

 

属性路由,通过在可选参数后面添加一个问好作为后缀。同时,必须为其指定默认值

 

 

 

工作原理

从根本上看,ASP.NET WEB API 支持的可选参数路由其实是默认值路由的一个变种。RouteParamter 在代码片段 3-8 中是一个可变类型。这个示例主要是为了做一个比较,来说明路由可选参数是路由默认值的一个变种。

 

 

 

属性路由中,添加问号后缀路由参数转换为 RouteEntry,使用 RouteParameter.Optional 的默认值。

 

在运行时,当框架处理 HTTP 请求的时候,如果可选参数没有值,HttpRoutingDispatcher 会移除他们。他是可以支持 /resource 和 /resource/{optionalParameter}。

 

代码演示

如代码片段 3-9 所示,使用的属性路由定义路由可选参数,这个是允许客户端传参进行基本的分页。

 

 

同样的路由,我们可以使用集中式路由如代码片段 3-10 所示定义路由可选参数。

 

 

posted @ 2016-11-29 08:27  水煮Code  阅读(541)  评论(3编辑  收藏  举报