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

我是 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 等。


叮当猫咪
浏览 157回答 1
1回答

Cats萌萌

这两个选项之间的区别在于[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.
打开App,查看更多内容
随时随地看视频慕课网APP