2015-07-02 38 views
0

刚开始这是会使用大量的WebAPI端点的项目,并有大约路线的一些问题。由于会有很多方法使用不同的参数名称,所以我想到的解决方案是添加不同的路径,并使用不同的参数名称。许多ASP.net的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路由配置,使之与不同的参数名称参数变化将绑定到正确的方法。

它会影响整体表现,如果我在配置类已经很多航线?

有没有更好的方式来实现什么,我想在这里拉?

回答

1

听起来好像你主要关心的是a)需要多个路由定义与b)带有'id'参数名称的单个路由之间的折衷。虽然我怀疑许多路由的性能受到影响是件大事,但为了减少代码,我倾向于单一路由定义。你不必调用参数'id',但它需要是相同的。也许一些通用的'参数':

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

感谢您的建议。但是我创建了其他用户可以访问的文档,直接从代码中获取。如果参数名称与所考虑的上下文更相关,则会更有意义。 – edocetirwi

+0

如果参数名的优先级,然后好像你唯一的选择是硬编码的动作名称,以便您能够区分参数名称。这当然会导致每个动作的路径定义,但是你会得到最终的结果。 –

+0

我一直在寻找这个问题,并发现WebAPI2有“属性”的路由,我想这就是我要找的。 – edocetirwi