C# webapi路由实现多个get方法

2025-05-24 01:29:26

C# webapi路由实现多个get方法很简单,通过特性路由就可以实现。

工具/原料

WebApi路由基础

特性路由

WebApi里面的路由

1、WebApi的默认路由是通过http的方法(get/post/put/delete)去匹配对应的action,也就是说webapi的默认路由并不需要指定action的名称。还是来看看它的默认路由配置,我们新建一个Webapi项目,在App_Start文件夹下面自动生成一个WebApiConfig.cs文件:

C# webapi路由实现多个get方法

2、将MapHttpRoute()方法转到定义可以看到它有四个重载方法:分别来看看芋黹抵榀各个参数的作用:name:&鳎溻趄酃quot;DefaultApi"→表示此路由的名称,这里只需要保证路由名称不重复就OK了。routeTemplate: "api/{controller}/{id}"→表示路由的url规则,“api”是固定部分,主要用来标识当前请求的url是一个api服务的接口,区别MVC的路由,当然,这里并不是一定要写成“api”,如果你改成“apiserver”,那么你请求的url里面也需要写成“apiserver”;“{controller}”是控制器的占位符部分,在真实的url里面,该部分对应的是具体的控制器的名称,这个和MVC里面一致;“{id}”是参数的占位符部分,表示参数,一般这个参数都会在default里面设置可选。有了这个路由模板约束请求的url,比如:我们请求的url写成http://localhost:21528/Order,那么肯定是找不到对应的路由的,因为“api”这个参数必选。如果请求的url匹配不到对应的路由,则会向客户端返回一个404的状态码。defaults: new { id = RouteParameter.Optional }→表示路由的默认值,比如上面的routeTemplate,{controller}和{id}部分都可以设置默认值,比如:defaults改成new { controller="Order", id = RouteParameter.Optional },那么我们请求http://localhost:21528/api这个url仍然能访问到GetAll()方法。constraints→表示路由约束,一般是一个约束路由模板的正则表达式。比如:我们加入约束条件 constraints: new { id = @"\d+" } ,这就约束必须要匹配一到多个参数id

WebApi使用AttributeRoutes特性路由实现多个GET

1、使用AttributeRoutes特性路由需要在APP_START里的WebApiConfig.cs的Register方法中添加一行:config.MapHttpAttributeRoutes();

C# webapi路由实现多个get方法

2、将Global.asax文件中WebApiConfig注释。

C# webapi路由实现多个get方法

3、创建WebApi TestController.cs文件。PS:如果想给某个API控制器中的所有Action加上一个前缀,可把RoutePrefix特性打在API控制器上。

C# webapi路由实现多个get方法

4、通过 http://host/api/v1/Test/user1/001访问 Get 方法http://host/api/v1/Test1/user2/002访问 Get1 方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢