C# 使用多个条件将多个参数传递给Rest API

C# 使用多个条件将多个参数传递给Rest API,c#,rest,http,C#,Rest,Http,我正在考虑设计一个Rest搜索API,它可以接受多个参数作为过滤器 例如: https://test/api/GetCustomer?Filter=”FirstName=test||LastName=test||telephone=043232323” 上面的示例基本上会在提供的字段之间执行Or。它将整个搜索字符串作为一个参数传递。我希望能够处理更复杂的查询以及以下内容: https://test/api/GetCustomer?Filter=”(FirstName=test||LastNam

我正在考虑设计一个Rest搜索API,它可以接受多个参数作为过滤器

例如:

https://test/api/GetCustomer?Filter=”FirstName=test||LastName=test||telephone=043232323”
上面的示例基本上会在提供的字段之间执行Or。它将整个搜索字符串作为一个参数传递。我希望能够处理更复杂的查询以及以下内容:

https://test/api/GetCustomer?Filter=”(FirstName=test||LastName=test)&&telephone=043232323”
我不太确定实现端点的最佳方式是什么,从前端的角度来看,将其作为单个参数传递比在API级别进行解析更容易。但显然,如果查询稍微复杂一点,则需要更多的努力才能解析查询


有没有更好的方法来实现这个场景

易用性是构建后端时最关心的问题之一。其次是实现的容易性。一般来说,编写复杂查询比解析复杂查询容易得多,因此前端开发人员可以用相对较小的工作量构建非常强大的过滤代码;这是一件好事


尽管正确地进行解析有点复杂,但是有一些解析工具用于管理复杂性,例如。尽管新工具的学习曲线可能有点陡峭,但最终您将获得一个强大的解析库,使前端开发人员能够轻松使用您的服务。

这将起作用,但您无法完成我在文章中提到的复杂操作。如果我想做或介于名字和姓氏之间,而不是和电话的整体结果。这不能用上面的方法实现。是的,在后端有复杂的逻辑是有意义的。
var queryString = this.Request.GetQueryNameValuePairs();

List<KeyValuePair<string, object>> QueryStringKeys = new 
List<KeyValuePair<string, object>>();

foreach (var pair in queryString)
{
    QueryStringKeys.Add(new KeyValuePair<string, object>(pair.Key.ToString(), pair.Value));
}

Boolean firstvalue = true;
foreach (var keys in QueryStringKeys)
{
    //access key.Key and key.Value here to make dynamic query
}
https://test/api/GetCustomer?FirstName=test&LastName=test&telephone=043232323