c# - Web Api 相同签名不同动词

标签 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. 属性路由

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

  • 检查处理程序内的动词
  • 将两个动词应用到同一个方法,然后在方法内检查您得到的是哪个动词:

    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/

    相关文章:

    c# - 从设备发送 NAudio/Opus 编码的音频作为 RTP

    c# - 以编程方式将 IIS 应用程序池标识 "users"分配给组

    c# - 在 NuGet nuspec 中使用 "dotnet"或 ".NETPlatform5.0"?

    asp.net-mvc-5 - 同一域中的 Web API 2 项目和 MVC 5 网站项目

    asp.net-web-api2 - 基于参数值的 Web API 2 路由

    javascript - CORS:凭据模式为 'include'

    c# - 方法名称中的隐式动词

    c# - MongoDb C# GeoNear 查询构造

    c# - 在基本 Controller 上使用 WebApi RoutePrefix 属性

    c# - 如何设置电源设置关闭 : never (turn off the display= never, 让计算机进入休眠状态 = 从不),通过 c# 代码