想要为基于REST的API使用相同的URL作为GET / PUT / DELETE / POST,但是当唯一不同的操作是它接受的HTTP动词时,它认为它们是重复的!
“类型已经使用相同的参数类型定义了一个名为”Index“的成员。
我说的是什么?这个只接受GET,这个只接受POST?应该能够共存吗?
怎么样?
解决方法
这不是ASP.NET MVC限制或其他。它是.NET和类如何工作:无论你尝试多么努力,你不能在同一个类上使用相同名称的两个方法。您可以使用
[ActionName]
属性作弊:
[HttpGet] [ActionName("Foo")] public ActionResult GetMe() { ... } [HttpPut] [ActionName("Foo")] public ActionResult PutMe() { ... } [HttpDelete] [ActionName("Foo")] public ActionResult DeleteMe() { ... } [HttpPost] [ActionName("Foo")] public ActionResult PostMe() { ... }
当然,在一个真正的RESTFul应用程序中,不同的动词也会采用不同的参数,所以你很少有这样的情况。
您可以查看SimplyRestful了解有关如何组织路线的一些想法。