GET请求路由

时间:2014-04-24 08:20:50

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

我遇到并在API控制器上发出GET请求路由问题,我遇到的问题是因为我需要有3个单独的GET方法:

public IEnumerable<MyViewModel> Get()

public virtual MyViewModel Get(int id)

public virtual MyResponceData<MyViewModel> Get(MyRequestData requestData)

如果我注释掉第三种方法,那么另外两种方法按预期工作,但是如果有一种方法也可用,我得到{"Message":"An error has occurred."}这没有多大帮助,但是当我评论方法时我会假设这是一个路由问题。 我只配置了默认路由,如下所示:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

到目前为止我尝试过的事情:

  • 在我阅读本文时,将[FromUri]属性添加到'MyRequestData'参数可能会解决问题。
  • 添加[Route("api/controller/otherGet")]这有效,但如果可能的话,我宁愿在参数上路由。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

经过研究,看起来并不可能(随意纠正我)。

我最后通过将Get()Get(MyRequestData requestData)设为私有并创建其他get方法来解决此问题:

public virtual object Get([FromUri]MyRequestData requestData)

然后我根据Get参数的设置方式调用相应的私有requestData方法。