我想GET /Product/1
和DELETE /Product/1
,而不必像DELETE /Product/Delete/1
这样单独行动:
例如:
public class ProductController : Controller
{
[HttpGet]
[HttpDelete]
public ActionResult Index(int id) { ... }
}
如何区分动作体内的HTTP动词?
答案 0 :(得分:3)
我会将逻辑分成两种不同的方法。
如果您需要相同的方法签名但不同的http方法,那么您应该能够执行以下操作:
[HttpGet]
public ActionResult Index(int id) { ... }
[ActionName("index")]
[HttpDelete]
public ActionResult IndexDelete(int id) { ... }
答案 1 :(得分:2)
您不希望在同一操作中使用Get | Delete,因为这只是令人困惑。一种方法没有理由做两件事。 One method does One thing。
那太糟糕了。
要解决此问题,请创建一个实际删除的ActionResult
,并为其添加HttpDelete
属性。
这是这样做的首选方式:
public class ProductController : Controller
{
public ActionResult Index(int id)
{
}
[HttpDelete]
public ActionResult Delete(int id)
{
}
}
有关Delete and Get的更多信息,请参阅此处。
答案 2 :(得分:0)
不要这样做。您没有保存任何代码,也无法将幂等GET
与潜在危险DELETE
混合使用。如果他们有不同的缓存要求怎么办?还是不同的授权?