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();
}
有两种方法可以解决这个问题:
- 属性路由
如果您使用属性路由,您可以应用相同的路由,只需重命名您的方法。
- 检查处理程序中的动词
将两个动词应用于同一个方法,然后在方法内部检查你得到的是哪个动词:
if(Request.Method == HttpMethod.Get)
{
// get it
}
else if(Request.Method == HttpMethod.Delete)
{
// delete it
}
我有一种情况,我希望将相同的参数传递到具有不同动词的 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
}