我需要能够从 ODataQueryOptions 进行转换至 RestRequest为了能够发出带有指定过滤器的 RestRequest,并创建了以下辅助类:
public static class ODataQueryFilterToRestClient
{
public static RestRequest Map(ODataQueryOptions odataQuery)
{
var restRequest = new RestRequest();
if (odataQuery.Filter != null)
{
restRequest.AddQueryParameter(@"$filter", odataQuery.Filter.RawValue);
}
if (odataQuery.Top != null)
{
restRequest.AddQueryParameter(@"$top", odataQuery.Top.RawValue);
}
if (odataQuery.Skip != null)
{
restRequest.AddQueryParameter(@"$skip", odataQuery.Skip.RawValue);
}
if (odataQuery.OrderBy != null)
{
restRequest.AddQueryParameter(@"$orderby", odataQuery.OrderBy.RawValue);
}
//etc
return restRequest;
}
}
鉴于 OdataQueryOptions 支持以下内容:
是否有更简单的方法在 ODataQueryOptions 到 RestClient 或其他 rest 客户端代理之间进行转换?
附带说明一下,我不知道是否有比 ODataQueryOptions 更好的方式通过 Controller 接受参数?
最佳答案
RestSharp
不直接支持ODataQueryOptions
。
还有其他专门为使用 OData
进行查询而设计的客户端,例如Simple.OData.Client .但是,它也不使用 ODataQueryOptions
来处理请求,提供流畅的 API。
总体而言,ODataQueryOptions
在服务器端用于 OData
兼容的 RESTful API。客户端(包括 RestSharp
)仅使用其常规语法来提供请求数据。
所以回答你的问题(有没有更简单的方法......) - 不,没有。
但是您的转换方法看起来不错而且非常简单。如果我必须为给定的 ODataQueryOptions
使用 RestSharp
进行调用,我会以完全相同的方式执行此操作。
关于c# - 如何将过滤器选项从 ODataQueryOptions 映射到 RestRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43266322/