过滤并仅使用Web API显示某些信息

时间:2014-04-15 08:18:24

标签: javascript asp.net asp.net-web-api asp.net-web-api2

我正在开发一个主要用asp.net和Javascript编写的网站,我在它上面使用了大量的ajax来从SQL数据库中检索和显示信息。

要执行所有这些操作,我使用Web API作为执行服务器相关任务的通信路径。

我的网站上有很多地方我只想显示某些信息。例如,我可以使用以下路线:api / customers / orders / order / 5

这将检索订单#5的数据。但是,如果我网站上的某些地方只需要显示订单号或订单说明或什么?如果我想更多地过滤数据库,或者只显示具有特定信息的订单,会发生什么。通过使用上面的URL,它会将有关订单的所有内容返回给Web浏览器,似乎有点不必要。

如果我对不同的过滤器有多种需求,那么我就不会理解路由是如何工作的,因为有些位是可选的。

任何建议都将不胜感激!或者也许我错过了什么!

由于

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作。您可以创建请求过滤器,如下面链接中指定的那样。

public class RequestFilterAttribute : Attribute, IHasRequestFilter
{
     #region IHasRequestFilter Members

     public IHasRequestFilter Copy()
     {
       return this;
     }

     public int Priority
     {
        get { return -100; }
     }

     public void RequestFilter(IHttpRequest req, IHttpResponse res, object requestDto)
     {
        var query = req.QueryString["q"] ?? req.QueryString["query"];
        var limit = req.QueryString["limit"];

        var offset = req.QueryString["offset"];

        var user = requestDto as QueryBase;
        if (user == null) { return; }
        user.Query = query;
        user.Limit = limit.IsEmpty() ? int.MaxValue : int.Parse(limit);
        user.Offset = offset.IsEmpty() ? 0 : int.Parse(offset);
     }

      #endregion
}

.Net WebAPI URI convention for advanced searching /filtering