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