有什么区别:
[HttpDelete]
public void deleteNotification(int userId, int notificationId)
{
Home.DeleteNotification(notificationId, userId);
}
和
public void deleteNotification(int userId, int notificationId)
{
Home.DeleteNotification(notificationId, userId);
}
您是否应该使用这些标签?为什么或为什么不呢?
答案 0 :(得分:2)
两者都称为HTTP方法,来自link:
HTTP方法。框架仅选择与请求的HTTP方法匹配的操作,确定如下:
您可以使用以下属性指定HTTP方法:
AcceptVerbs,HttpDelete,HttpGet,HttpHead,HttpOptions,HttpPatch,HttpPost或HttpPut。
否则,如果控制器方法的名称以“Get”,“Post”,“Put”,“Delete”,“Head”,“Options”或“Patch”开头,那么按惯例action支持HTTP方法。
- 醇>
如果不是上述方法,则该方法支持POST。
因此,只要您的方法在您的操作中具有属性[HttpDelete]
或前缀delete
,它仍然有效。
答案 1 :(得分:0)
不同之处在于第一个操作只接受带有DELETE方法的请求,而第二个操作将接受任何方法的请求(GET,POST,PUT,DELETE,HEAD,OPTIONS或PATCH)。
您的操作将适用于您使用它的方式,对于它应如何处理不正确的请求最重要。有时会有一些糟糕的机器人/脚本通过执行诸如获取他们可以找到的任何URL并向其发送内容来扫描站点的漏洞。如果操作只接受单个请求方法,那么大多数垃圾请求将返回HTTP 404而不是因为输入值错误而导致异常(或更糟)。