我在服务架构上使用odata和web API。 我想在返回IQuerable之前使用URL中的参数进行一些过滤。可能这意味着我将API路由与odata路由混合在一起。一个不起作用的例子,只是想知道我想要实现的目标:
https://www.reddit.com/api/v1/me
可以这样做吗?怎么样? 感谢
答案 0 :(得分:2)
添加System.Web.OData.Query.ODataQueryOptions
参数并将其应用于数据源:
[ResponseType(typeof(IQueryable<Something>))]
[System.Web.Http.HttpGet, System.Web.Http.Route("Something/{id:guid}/SomeFiltrableList")]
public async Task<IQueryable<Something>> Get(Guid id, ODataQueryOptions options)
{
var someFiltrableList = await _repository.GetSomething(id);
return options
.ApplyTo(someFiltrableList)
.Cast<Something>()
.AsQueryable();
}