Web Api 相同的签名不同的动词

Web Api Same Signature Different Verbs

我有一种情况,我希望将相同的参数传递到具有不同动词的 Web Api 端点。存在不允许存在两个相同签名的 C# 限制。我可以将两个动词应用于同一个签名,但是我该如何检查传入的是哪个动词?

或者,解决这个问题的最佳实践是什么?

[HttpDelete]
public IHttpActionResult Logs([FromUri] string source, [FromUri] string startDate, [FromUri] string endDate)
{
    return Ok();
}

[HttpGet]
public IHttpActionResult Logs([FromUri] string source, [FromUri] string startDate, [FromUri] string endDate)
{
    return Ok();
}

有两种方法可以解决这个问题:

  1. 属性路由

如果您使用属性路由,您可以应用相同的路由,只需重命名您的方法。

  1. 检查处理程序中的动词

将两个动词应用于同一个方法,然后在方法内部检查你得到的是哪个动词:

if(Request.Method == HttpMethod.Get)
{
    // get it
}
else if(Request.Method == HttpMethod.Delete)
{
    // delete it
}