Web Api Controller中使用Route属性与HttpGet内置路由的区别是什么?
结论
两种写法在常规使用场景下功能完全一致,没有运行时差异。
具体说明
- 第一种拆分写法:
[HttpGet]特性的作用是限定该 Action 仅响应 HTTP GET 请求,单独声明的[Route("GetReport")]特性负责为该 Action 绑定路由模板,二者组合后的效果就是「匹配路径为GetReport的 GET 请求」。 - 第二种合并写法:
[HttpGet("GetReport")]是 ASP.NET Core 提供的语法糖,这个重载方法本身就会同时完成两个操作:限定请求方法为 GET、绑定路由模板为GetReport,和拆分写法的逻辑完全相同。
哪怕你的控制器上还声明了全局的 [Route] 特性,两种写法的路由拼接规则也完全一致,不会出现路由路径不同的情况。目前官方更推荐第二种合并写法,代码更简洁,能减少冗余的特性声明。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

