我遇到一种情况,我希望将相同的参数传递给具有不同动词的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();
}

最佳答案

有两种解决方法:


属性路由


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


检查处理程序中的动词


将两个动词应用于相同的方法,然后在方法内部检查要获取的动词:

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

关于c# - Web Api相同签名不同动词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35951246/

10-12 15:54