【问题标题】:Many ASP.net WebAPI routes许多 ASP.net WebAPI 路由
【发布时间】:2015-07-02 14:22:21
【问题描述】:

刚开始一个项目,该项目将使用大量 WebAPI 端点并且对路由有一些疑问。由于会有许多具有不同参数名称的方法,因此我考虑的解决方案是添加具有不同参数名称的不同路由。

问题是我在各种 ApiController 类中定义的所有方法都有类似的签名

public string SomeMethod(string token, string id);
{
    //method body
}

我想要其他方法:

public string SomeMethod1(string token, string logType)
{
    //method body
}
public string SomeMethod2(string token, string name)
{
    //method body
} ....etc

我想避免必须将参数名称定义为“id”的每个方法,以便路由匹配并绑定到 ApiController 类中的相应方法。

在 WebAPI 路由配置中添加许多路由是可接受的做法,以便具有不同参数名称的不同参数将绑定到正确的方法。

如果配置类中有很多路由,会不会影响整体性能?

有没有更好的方法来实现我想要在这里实现的目标?

【问题讨论】:

    标签: c# asp.net rest asp.net-web-api2


    【解决方案1】:

    听起来您主要关心的是 a) 需要多个路由定义与 b) 具有“id”参数名称的单个路由之间的权衡。虽然我怀疑许多路由对性能的影响很大,但为了减少代码,我会倾向于单一的路由定义。您不必调用参数“id”,但它必须相同。也许像“论点”这样的泛型:

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{token}/{argument}",
        defaults: new { controller = "Blah", action = "SomeMethod" });
    

    【讨论】:

    • 感谢您的建议。但我正在创建其他用户可以直接访问代码的文档。如果参数名称与所考虑的上下文更相关,那就更有意义了。
    • 如果参数名称是优先级,那么您唯一的选择似乎就是对动作名称进行硬编码,以便您可以区分参数名称。这当然会导致每个操作都有一个路由定义,但您会得到最终结果。
    • 我正在研究这个问题,发现 WebAPI2 有基于“属性”的路由,我想这就是我要找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多