【问题标题】:Method with two parameters in asp.net web apiasp.net web api中有两个参数的方法
【发布时间】:2012-03-29 17:07:44
【问题描述】:

如何使用 ASP.NET Web Api 创建具有两个参数的方法?

这样我就可以像 localhost/controller/param1/param2 一样调用它

【问题讨论】:

    标签: asp.net-web-api


    【解决方案1】:

    我认为最简单的方法是简单地使用AttributeRouting

    [Route("api/YOURCONTROLLER/{paramOne}/{paramTwo}")]
    public string Get(int paramOne, int paramTwo) {
        return "The [Route] with multiple params worked";
    }
    

    {} 名称需要与您的参数匹配。

    Attribute Routing in ASP.NET Web API 2

    【讨论】:

    • 伙计,我用了 1000 次,一直认为这是一种“黑客”,有更好的方法。似乎这实际上是最佳实践..
    【解决方案2】:

    只需在 global.asax 中更改或添加路由

    routes.MapHttpRoute(name: "DefaultApi1", routeTemplate: "api/{controller}/{id}/{name}", Defaults: new{} );
    

    【讨论】:

      【解决方案3】:

      您还可以在查询字符串中使用特定参数名称调用 url:

      /api/actions?param1=5&param2=1/1/2000
      

      那么控制器方法是:

      GetByParams(int param1, DateTime param2)
      

      【讨论】:

      • 这是更好的答案。接受的答案有效,但 URL 没有多大意义。 /id/name 的 URL 是这样的:mysite/api/DoStuff/12345/Vince。这没有多大意义。就像“Vince”是“12345”类别中的某个项目。 mysite/api/users/Vince 更有意义或mysite/api/users?name=Vince&id=12345
      • 很好的答案。正是我想要的。
      • 您能否提供有关 GetByParams 方法的官方详细信息的链接?我无法找到它。不过,我已经对其进行了测试,它的工作原理与您描述的一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多