如何缩短Odata查询字符串?

时间:2015-12-17 14:00:03

标签: c# odata

我有一个使用策略号查询api的方法。我发现查询字符串的字符限制刚刚超过2k。这是我发送查询的方法。如何确保或缩短字符串,使其永远不会超出字符限制?

 public void BuildPolicyQuery()
        {
            if (!PolicyNumbers.IsAny()) return;
            //if (PolicyNumbers == null || PolicyNumbers.Count() == 0) return;
            QueryForWebServices = "Policy?$filter=PolicyNumber eq '" + PolicyNumbers.First() + "'";
            if (PolicyNumbers.Count() == 1) return;
            foreach (var p in PolicyNumbers.Skip(1))
            {
                QueryForWebServices += " or PolicyNumber eq '" + p + "'";
            }
        }

1 个答案:

答案 0 :(得分:3)

如果您可以修改服务,则可以在策略路由上定义操作并在操作负载中传递策略编号。例如:

POST /Policy/SomeNamespace.GetSubsetByPolicyNumber
{ "PolicyNumbers": [ 123, 456, ... ] }

您需要一个操作而不是一个函数,因为前者使用POST并使用有效负载(内容主体),而后者则使用GET和URI中的参数。

Actions and Functions in OData v4 Using ASP.NET Web API 2.2