我是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等。
答案 0 :(得分:1)
两个选项之间的区别在于模板URL中存在[action]
。因此,如果您了解[controller]
的工作原理,那么也很容易理解[action]
目的。
当您在重命名动作方法时不想打扰自己时,第一个选项([Route("api/[controller]/[action]")]
)会更好。使用此选项,将来如果重命名操作方法,它将自动反映在URL中。实际上,您有api/some/somemethod
作为网址,但如果您将SomeMethod
重命名为MySuperSomeMethod
,新网址将为api/some/mysupersomemethod
。
第二个选项使用[HttpGet("SomeMethod/{parameter}")]
,操作方法的名称位于模板路径中。因此,如果您将SomeMethod
重命名为MySuperSomeMethod
,则生成的网址将始终为api/some/somemethod
。