1

有什么区别:

[HttpDelete]
public void deleteNotification(int userId, int notificationId)
{
    Home.DeleteNotification(notificationId, userId);
}

public void deleteNotification(int userId, int notificationId)
{
    Home.DeleteNotification(notificationId, userId);
}

您是否应该使用这些标签?为什么或者为什么不?

4

2 回答 2

2

两者都称为 HTTP 方法,来自链接

HTTP 方法。框架只选择与请求的 HTTP 方法相匹配的动作,确定如下:

您可以使用属性指定 HTTP 方法:

  1. AcceptVerbs、HttpDelete、HttpGet、HttpHead、HttpOptions、HttpPatch、HttpPost 或 HttpPut。

  2. 否则,如果控制器方法的名称以“Get”、“Post”、“Put”、“Delete”、“Head”、“Options”或“Patch”开头,则按照惯例,该操作支持该 HTTP 方法。

  3. 如果以上都不是,则该方法支持 POST。

因此,只要您的方法在您的操作中具有属性[HttpDelete]或前缀delete,它仍然有效。

于 2013-08-05T16:58:54.233 回答
0

不同之处在于第一个操作将只接受使用 DELETE 方法的请求,而第二个操作将接受任何方法(GET、POST、PUT、DELETE、HEAD、OPTIONS 或 PATCH)的请求。

无论哪种方式,您的操作都适用于您使用它的方式,最重要的是它应该如何处理不正确的请求。有时会有不良的机器人/脚本通过获取他们可以找到的任何 URL 并向其发送内容来扫描站点的漏洞。如果该操作只接受一个请求方法,那么大多数垃圾请求将返回 HTTP 404,而不是因为输入值错误而导致异常(或更糟)。

于 2013-08-05T17:08:20.343 回答