目前,我们使用以下路由规则来满足所有控制器的需要;优点是我们不必为每个控制器中的每个操作定义一个路由:
routes.MapHttpRoute("3", "{controller}/{action}/{arg1}/{arg2}/{arg3}");
routes.MapHttpRoute("2", "{controller}/{action}/{arg1}/{arg2}");
routes.MapHttpRoute("1", "{controller}/{action}/{arg1}");
routes.MapHttpRoute("0", "{controller}/{action}");但是,由于这一点,方法中的参数名称必须匹配;与此类似:
// Example method signature
public ResponseDto GetResponse(int arg1, int arg2)如果参数名称更改为更友好的名称(例如:显示每个参数的意图的名称,而不是模糊的"arg1“名称),则如下所示:
// Better example method signature
public ResponseDto GetResponse(int userId, int itemId)除非:
是否有办法设置WebApi路由,以便根据参数数自动使用正确的操作,而不是参数名称?
发布于 2013-01-28 15:06:52
看起来,您正在尝试做一些类似于这篇关于自定义参数绑定的好博客文章中描述的事情。正如你所发现的,没有什么能支持你想要做的事情。
在概念层面上,HTTP是围绕资源的概念构建的。URI应该标识特定的资源。使用通用位置“参数”似乎模糊了资源的特殊性。使用URI的查询字符串似乎可以更好地满足您的用例。这样,您的HTTP表达了对给定资源所期望的参数的明确意图。
https://stackoverflow.com/questions/14560501
复制相似问题