将多个查询参数传递到.netcore web api中的GET端点

时间:2017-09-30 19:57:26

标签: asp.net-web-api asp.net-core controller

我有一个应用程序,其中有几个参数传递给我的端点进行搜索,这些参数未定义,因为它们是动态生成的,所以我无法将其映射到特定模型。将任何查询参数映射到我的GET端点的最佳方法是什么?

[HttpGet]
public CustomResponse GetResults({something here that will map the parameters?})
{
    //perhaps a dictionary? a collection of some sort? 
}

然后我需要获取所有这些键和值,并在数据库中搜索包含该键的任何内容,正如我所说的那样。

所以我可以通过类似的东西?

/api/Merchandise/GetResults?sku=30021&cupsize=medium&color=red&location=south& {and all the dynamic fields which could be anything}

2 个答案:

答案 0 :(得分:2)

HttpRequest对象具有Query属性IQueryCollection并保存所有传递的查询参数。

换句话说,在你的行动方法中你可以这样做:

[HttpGet]
public CustomResponse GetResults()
{
    var queryParams = HttpContext.Request.Query;

    // directly get by name
    var value1 = queryParams["parameter_name"];
    // or queryParams.TryGetValue()

    foreach (var parameter in queryParams)
    {
        string name = parameter.Key;
        object value = parameter.Value;
    }
}

答案 1 :(得分:0)

你可以把它映射到JObject,就像一个字典。

不要忘记:

using Newtonsoft.Json;