Web Api相同签名不同动词

时间:2016-03-11 22:43:11

标签: c# asp.net-web-api2

我有一种情况,我希望使用不同的动词传递给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 个答案:

答案 0 :(得分:2)

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

  1. 属性路由
  2. 如果使用属性路由,则可以应用相同的路径,只需重命名方法。

    1. 检查处理程序内的动词
    2. 将两个动词应用于相同的方法,然后在方法内部检查您获得的动词:

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