我是 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 但如果你重命名SomeMethod
为MySuperSomeMethod
,新的 URL 将是api/some/mysupersomemethod
.
第二个选项使用[HttpGet("SomeMethod/{parameter}")]
并且您的操作方法的名称位于模板路由内。因此,如果您重命名SomeMethod
为MySuperSomeMethod
生成的 URL 将始终为api/some/somemethod
.
- 1 回答
- 0 关注
- 156 浏览
添加回答
举报
0/150
提交
取消