【问题标题】:Filtering and only display certain information using Web API使用 Web API 过滤并仅显示某些信息
【发布时间】:2014-05-29 11:27:25
【问题描述】:

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

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

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

这将检索订单 #5 的数据。但是,如果我网站上的某些地方只需要显示订单号或订单描述之类的东西怎么办?如果我想进一步过滤数据库会发生什么,也许只显示带有特定信息的订单。通过使用上面的 URL,它会将有关订单的所有信息返回到 Web 浏览器,这似乎有点不必要。

如果我对不同的过滤器有多种需求,那么我不明白路由将如何工作,因为某些位是可选的。

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

谢谢

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 1970-01-01
      • 2023-01-27
      • 2015-08-20
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多