zoukankan      html  css  js  c++  java
  • Dynamics CRM 2015/2016 Web API:新的数据查询方式

    今天我们来看看Web API的数据查询功能,尽管之前介绍CRUD的文章里面提到过怎么去Read数据,可是并没有详细的去深究那些细节,今天我们就来详细看看吧。事实上呢,Web API的数据查询接口也是基于OData协议的,所以之前的OData Url Query的构造规则没有非常大的变化。比如:$top, $select, $filter, $expand, $order的功能还是在的,只是也加入了一些新东西,比如

    $count  -- 返回记录的总数

    Paging Mechanism(分页机制)-- 来东西,如今,实现机制不一样了,基于HTTP报头设置页大小

    Formatted Value(新东西。没有找到最新的文档) -- 目測和记录的格式化有关,只是没找到详细的Mapping文档


    $count

    $count非常好理解,返回记录在系统中的总数(和filter条件相关),假设不制定filter条件。则返回全部记录的总数。



    Paging Mechanism

    须要设置HTTP 报头:odata.maxpagesize=?,和之前的API不一样了



     HttpRequestMessage retrieveAccReq = new HttpRequestMessage(HttpMethod.Get, webApiUrl + "/accounts?$select=name&$count=true");
    
                retrieveAccReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode);
                retrieveAccReq.Headers.Add("Prefer", "odata.maxpagesize=2");
                string nextPageLink = string.Empty;
                JObject result = null;
                int pageIndex = 1;
                HttpResponseMessage retrieveAccResp;
                do
                {
                    if (!string.IsNullOrWhiteSpace(nextPageLink))
                    {
    
                        retrieveAccReq = new HttpRequestMessage(HttpMethod.Get, nextPageLink);
                        retrieveAccReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode);
                        retrieveAccReq.Headers.Add("Prefer", "odata.maxpagesize=2");
                    }
    
                    retrieveAccResp = await client.SendAsync(retrieveAccReq);
                    result = JsonConvert.DeserializeObject<JObject>(await retrieveAccResp.Content.ReadAsStringAsync());
                    Console.WriteLine("Page-" + pageIndex++);
                    Console.WriteLine(result.ToString());
                    if (retrieveAccResp.IsSuccessStatusCode)
                    {
    
                        if (result["@odata.nextLink"] != null && !string.IsNullOrWhiteSpace(result["@odata.nextLink"].Value<string>()))
                        {
                            nextPageLink = result["@odata.nextLink"].Value<string>();
                        }
                        else
                        {
                            nextPageLink = "";
                        }
    
                    }
                    else
                    {
                        break;
                    }
    
    
                } while (!string.IsNullOrEmpty(nextPageLink));


    Formatted Value

    目測和返回记录的格式化有关,返回的记录更好理解,只是没找到详细的Formatted Mapping。建议不轻易使用。



                HttpRequestMessage retrieveAccWithFormattedValueReq = new HttpRequestMessage(HttpMethod.Get, webApiUrl + "/accounts?$select=name,donotpostalmail,accountratingcode,numberofemployees,revenue&$top=1");
                retrieveAccWithFormattedValueReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode);
                retrieveAccWithFormattedValueReq.Headers.Add("Prefer", " odata.include-annotations="OData.Community.Display.V1.FormattedValue"");
    
                HttpResponseMessage retrieveAccWithFormatedValueResp = await client.SendAsync(retrieveAccWithFormattedValueReq);
    
                if (retrieveAccWithFormatedValueResp.IsSuccessStatusCode)
                {
                    JObject result = JsonConvert.DeserializeObject<JObject>(await retrieveAccWithFormatedValueResp.Content.ReadAsStringAsync());
                    Console.WriteLine(result.ToString());
                }

    在Web API的数据查询里面呢,另一个比較重要的仅仅是就是使用Web API Query Function,博主将在兴许的博文中为大家介绍它的用法。




  • 相关阅读:
    Dos命令%date:~0,10%
    SharePoint显示错误信息
    VM打开虚拟机文件报错
    Sharepoint2013切换用户菜单
    批量创建域用户
    通过数据库恢复SharePoint网站
    SharePoint2013修复报错
    js 循环
    js 正则表达式
    阶乘函数
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7211298.html
Copyright © 2011-2022 走看看