这两种形式的 Web Api 路由之间的区别?
Differences between these two forms of WebApi routing?
我是 Web Api 编程的新手,并且是第一次使用 .Net Framework Web 应用程序。我在 Web Api 调用中包装了我的一些对象,我想知道我的控制器中的这两种路由方法是否有任何区别?我不想一开始就用,后来才发现它有一些缺点等等。
第一种方法是在 class:
之前指定路由
[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 等。
这两个选项的区别在于模板 URL 中存在 [action]
。因此,如果您了解 [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
。
我是 Web Api 编程的新手,并且是第一次使用 .Net Framework Web 应用程序。我在 Web Api 调用中包装了我的一些对象,我想知道我的控制器中的这两种路由方法是否有任何区别?我不想一开始就用,后来才发现它有一些缺点等等。
第一种方法是在 class:
之前指定路由[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 等。
这两个选项的区别在于模板 URL 中存在 [action]
。因此,如果您了解 [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
。