为了账号安全,请及时绑定邮箱和手机立即绑定

这两种形式的WebApi路由的区别?

这两种形式的WebApi路由的区别?

C#
叮当猫咪 2021-08-07 15:59:40
我是 Web Api 编程的新手,并且是第一次使用 .Net Framework Web App。我将我的一些对象包装在 Web Api 调用中,我想知道我的控制器中的这两种路由方法是否有任何区别?我不想开始使用一个只是后来发现它有一些缺点等。第一种方法是在类之前指定路由:[Route("api/[controller]/[action]")]public class SomeController : Controller {    [HttpGet("{parameter}")]    public Object SomeMethod(int parameter) { ... }    (...)}第二种方法是在每个方法之前指定路由:[Route("api/[controller]")]public class SomeController : Controller {    [HttpGet("SomeMethod/{parameter}")]    public Object SomeMethod(int parameter) { ... }    (...)}我只是没有足够的经验来了解这两个代码块之间的区别,以及是否有其他更有效的方法来解决这个问题。谢谢!将来我还需要实现 Post、Put、Delete 等。
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

这两个选项之间的区别在于[action]模板 URL 中是否存在。因此,如果您了解[controller]工作原理,那么也很容易理解[action]目的。

[Route("api/[controller]/[action]")]当您重命名操作方法时不想打扰自己时,第一个选项 ( ) 更好。使用此选项,以后如果您重命名操作方法,它将自动反映在 URL 中。实际上你有api/some/somemethod作为 URL 但如果你重命名SomeMethodMySuperSomeMethod,新的 URL 将是api/some/mysupersomemethod.

第二个选项使用[HttpGet("SomeMethod/{parameter}")]并且您的操作方法的名称位于模板路由内。因此,如果您重命名SomeMethodMySuperSomeMethod生成的 URL 将始终为api/some/somemethod.


查看完整回答
反对 回复 2021-08-07
  • 1 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信