详解ASP .网络应用编程接口之属性路由
以下为常规手动音量调节路由
配置路线。MapHttpRoute(名称: ' DefaultAPI ',route templates : ' API/{ controller }/{ id } ',默认值3360 new { id=RouteParameter .可选},);如果我们要实现类似以下效果路由的话,使用常规公约路由比较麻烦。
订单/里程/三只松鼠干果/2袋第2017/1/13号命令如果使用属性路由的话就比较简单了。
新建网络应用编程接口项目的话,打开应用程序_开始目录下的WebApiConfig.cs文件添加以下代码开启属性路由配置。
配置maphttpattributorates属性路由也可以和公约路由混合使用,如下:
公共静态无效寄存器(HttpConfiguration config){//Web API配置和服务//Web API路由配置maphttpattributorates配置路线。MapHttpRoute(名称: ' DefaultAPI ',route templates : ' API/{ controller }/{ id } ',默认值3360 new { id=RouteParameter .可选},约束s 3360新{[电子邮件保护]' \ d ' });}在要使用属性路由的方法上打上特性标记,如下:
[路线('订单/{用户昵称}/{产品名称}/{计数}')]测试结果(网址经过了编码,不然会报400错误。)
通常情况下,在同一个控制器中的所有路由以相同的前缀开头
[路线(“API/books”)][路线(' API/books/{ id : int } ')][路线(' API/书籍')]这样很明显是比较麻烦的。所以我们用[RoutePrefix]属性来设置一个公共的前缀
测试结果
如果使用了[RoutePrefix]的话,某些比较特殊的api,我们可以使用波浪线来重写路由前缀,如下:
测试结果(同一个类下)
路由前缀中也可以包含参数,如下
测试结果
可以在路由中添加参数约束,如下
测试结果
如果参数不是(同国际组织)国际组织类型,则不会匹配到该路由
以下都是一些会被支持到的约束
可以使用多个约束,但是要用冒号分开
[路由(“users/{id:int:length(1,3)}”)]公共用户GetUserById(int id){ 0.}结果
如果不在范围内的话则匹配不到
自定义路由约束,需要实现IHttpRouteConstraint接口,具体查看官方
公共类非零约束: ihttprouteconttraint { public bool Match(Httprequestmessage请求,IHttpRoute路由,字符串parameterName,IDictionarystring,对象值,Httprouted方向路由方向){ 0对象值;如果(值尝试获取值(参数名,输出值)值!=null){ long long值;if(值为long) { longValue=(long)值;返回longValue!=0;}字符串值字符串=转换. ToString(值,CultureInfo .不变量文化);if (Int64 .(值字符串,数字样式。整数,CultureInfo .不变量文化,out LongVaLue)){ 0返回longValue!=0;} }返回false}}注册约束
公共静态类WebApiConfig{公共静态void Register(HttpConfiguration config){ var constraintResolver=new DefaultInlineConstraintResolver();约束解析器.ConstraintMap。添加('非零,类型为(非零约束));配置maphttpattributorates(约束解析器);}}使用约束
[路由(“{ id :非零}”)]公共http响应消息非零(int id){ 0.}可选的上呼吸道感染参数和默认值
你可以通过添加一个问号标记路由参数使成为一个可选的上呼吸道感染参数。如果一个路由参数是可选的,你必须为这个方法参数定义一个默认值。
公共类图书控制器: API控制器{[Route(' API/books/locale/{ lcid : int?} ')]public IEnumerableBook getbookbylocale(int lcid=1033){ 0.}}或者在路由模版中定义默认值
public class books controller : API controller {[route(' API/books/locale/{ lcid=1033 } ')]public ienumerablebook getbookbylocal(int lcid)}.}}写了这么多常用的,剩下的看官网!希望对大家的学习有帮助,希望大家多多支持我们。
版权声明:详解ASP .网络应用编程接口之属性路由是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。