C# 这两种WebApi路由形式之间的差异?
我是Web Api编程新手,第一次开发.Net Framework Web应用程序。我正在用Web Api调用包装我的一些对象,我想知道在我的控制器中这两种路由方法是否有任何区别?我不想一开始就使用它,只是后来发现它有一些缺点,等等 第一种方法是在类之前指定路由:C# 这两种WebApi路由形式之间的差异?,c#,.net,asp.net-mvc,controller,asp.net-web-api2,C#,.net,Asp.net Mvc,Controller,Asp.net Web Api2,我是Web Api编程新手,第一次开发.Net Framework Web应用程序。我正在用Web Api调用包装我的一些对象,我想知道在我的控制器中这两种路由方法是否有任何区别?我不想一开始就使用它,只是后来发现它有一些缺点,等等 第一种方法是在类之前指定路由: [Route("api/[controller]/[action]")] public class SomeController : Controller { [HttpGet("{parameter}")] pub
[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