Asp.net mvc 使用WebApi传递复杂参数

Asp.net mvc 使用WebApi传递复杂参数,asp.net-mvc,rest,asp.net-web-api,Asp.net Mvc,Rest,Asp.net Web Api,我有以下控制器,我正在尝试使用FromUri属性传递复杂对象: public class MyController : ApiController { [HttpGet] public IHttpActionResult GetData() { return this.Ok(); } [HttpGet] public IHttpActionResult GetData([FromUr

我有以下控制器,我正在尝试使用FromUri属性传递复杂对象:

 public class MyController : ApiController
    {
       [HttpGet]
       public IHttpActionResult GetData()
       {
         return this.Ok();
       }

       [HttpGet]
       public IHttpActionResult GetData([FromUri] Request request)
       {
         return this.Ok();
       }
    }

    public class Request
    {
      public int Id  { get; set;}
      public string Category { get; set;}
    }
只要我删除
GetData()
方法,它就可以正常工作。当我将其添加到中时,会出现以下错误:找到多个与请求匹配的操作


有没有办法在同一控制器中同时使用这两种方法?

为什么在同一控制器中同时使用这两种方法?如何区分GetData(null)和GetData?两种情况下的url都是相同的。根据有效负载而不是URI调用不同方法的API不是最佳选择。我希望能够调用localhost/API/my,它将返回一个对象列表,调用localhot/API/my/?Id=1&Category=test,它将返回单个对象。我知道可以使用简单参数来完成。在这种情况下,我想使用复杂参数。尝试使用来区分两个路由当您需要
Index()
操作时,如果没有指定参数来返回对象列表,则会调用该操作