用于查询字符串的Web API控制器GETter可以是通用的吗?

时间:2013-11-05 18:36:53

标签: c# entity-framework asp.net-web-api

来自Microsoft的CRUD tutorial for their Web API:

  

最后,添加一种按类别查找产品的方法:

public IEnumerable<Product> GetProductsByCategory(string category)
{
    return repository.GetAll().Where(
            p => string.Equals(p.Category, category, StringComparison.OrdinalIgnoreCase));
}
  

如果请求URI具有查询字符串,则Web API会尝试将查询参数与控制器方法上的参数进行匹配。因此,“api / products?category = category”形式的URI将映射到此方法。

有没有办法让这个通用?如GetProductsByWhateverIsInTheURI(string WhateverIsInTheURI)或“api / products?whatever = whatever”?

谢谢。

1 个答案:

答案 0 :(得分:2)

我不确定我是否会将其描述为“通用”,但你可能只是拥有一条完全取消参数绑定的全能路线。这将是一种“在一种方法中接受任何类型的参数”的方法。

public IEnumerable<string> Get()
{
    List<string> retval = new List<string>();

    var qryPairs = Request.GetQueryNameValuePairs();
    foreach (var q in qryPairs)
    {
        retval.Add("Key: " + q.Key + " Value: " + q.Value);
    }

    return retval;
}