Запрос комплексного объекта Mvc Web API через GET

Есть ли способ запросить веб-api через "GET", но со сложным объектом в его параметре?

Все примеры, которые я видел до сих пор, похоже, указывают, что мне придется использовать "POST". Но я не хочу использовать "POST", потому что это запрос, в то же время я не хочу функции с 16 аргументами, потому что это просто кричит хрупким.

public Product Get(int id, string name, DateTime createdBy, string stockNumber, ... ) 
    { 
          ...
    }

Я хочу, чтобы приведенное выше было:

public Product Get(ProductQuery query) 
    { 
          ...
    }

Есть ли способ сделать это? И как вы делаете HttpClient работать с вышеуказанной услугой.

Ответ 1

Вы можете передать параметр ProductQuery [FromUri].

Скажем, это ваш класс ProductQuery:

public class ProductQuery
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime CreatedBy { get; set; }
    public string StockNumber { get; set; }
}

Вы можете аннотировать свой параметр действия с помощью [FromUri]...

    public Product Get([FromUri] ProductQuery productQuery)
    {...}

... и свойства ProductQuery (т.е. Id, Name,...) могут быть переданы из строки запроса в Uri:

http://.../api/products?Id=1&Name=Product1&CreatedBy=1/4/2013&StockNumber=ABC0001