【WebAPI】路由规范

  • 路由基础

新建一个WebApi服务的时候APP_Start文件夹下的WebApiConfig.cs中生成了一个默认的路由:

Name:“DefaultApi”表示此路由的名称,这里只需要保证路由名称不重复就好。

routeTemplate:“api/{controller}/{id}”定义了路由模板,“api”是固定的部分,用来表示当前请求的url是一个api服务的接口,但是不用非得写成api,可以写成跟你系统相关的名字,例如:no/{controller}/{id},这样,你请求url里边也要以no开头。{controller}是控制器占位符。{id}是参数占位符。

Default:new{id=RounteParameter.Optional}表示路由默认值。可以改成登录页面对应的controller和id。例如:default:new{controller=”login”,id=RounteParameter.Optional}

Constarints:表示路由约束,一般为正则表达式。例如:constraints:new{id=@”/d+”}表示约束必须匹配到一到多个参数。

  • 自定义路由

在WebApiConfit.cs中这样写:

第二种用action的不提倡。

  • WebApi路由过程

三个阶段:

  1. 根据请求的url匹配路由模板
  2. 找到控制器
  3. 找到action
  • WebApi特性路由

对于http请求的方法相同,并且请求的参数也相同的请求解决办法,例如:

1.启动特性路由

在WebApiConfit.cs的Register方法中启用特性路由:

2.在方法上添加特性路由

在OrderController控制器中加这个方法:

在Web里边的Ajax调用:

[Route(“Test/AttrRoute”)]改成

[Route(“Test/AttrRoute”)]则请求的url换成

http://localhost:21528/Test/AttrRoute一样可以成功

3.带参数的特性路由

特性路由规则可以使用“{}”占位符动态传递参数。

比如:

浏览器里调用:

4.参数的约束和默认值

表示{id}取值必须是int类型。并且默认值是3。

5.路由前缀

为同一控制器中的所有方法的所有特性路由标识一个相同的前缀,增加url可读性。

在控制器上用特性[RoutePrefix]标识:

访问这个控制器action的时候,都需要api/order开头,后面接上action特性路由规则。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值