我有一个应用程序,其中有几个参数传递给我的端点进行搜索,这些参数未定义,因为它们是动态生成的,所以我无法将其映射到特定模型。将任何查询参数映射到我的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}
答案 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;