本篇大家来看一下 SharePoint REST API,过滤操作须要接纳$filter

后边一篇我们介绍了 Office 3陆5 REST API
的法定工具的利用,本篇大家来看一下 SharePoint REST API
本身的描述、结构和选择方法,以及一些应用经验。

  1. SharePoint 2013使用_api来标识出 REST SEMuranoVICE,REST Service其实是
    client.svc web service的壹有的,但为了简化 REST U路虎极光I的构造以及缩小REST
    U奇骏I的长度,使用 _api 来替代 _vti_bin/client.svc,例如, 你能够行使
    http://server/site/\_vti\_bin/client.svc/web/lists 来替代 http://server/site/\_api/web/lists;然而URL有256字符长度的限制,所以建议使用
    _api
    惯例;可参考此文章中的 Reference
    the SharePoint 2013 REST service in your endpoint URI
    章节;

第三来看看SharePoint REST API 的概述:

SharePoint 2013 REST Syntax
Posters.pdf

      REST API 服务是在 SharePoint 2013 中被引入的,官方认为 REST API
服务能够比美于现有的 SharePoint 客户端对象模型。开发职员能够行使此外支持REST Web 请求的技能(C#,javascript,java,oc 等等)以长途方式与
SharePoint 数据举办交互。这也就表示,开发人士能够行使 REST
Web技术和行业内部开放数据协议(OData)语法从其 SharePoint
相关应用程序、消除方案和客户端应用程序执行 CRUD 操作。而针对性中长途 Web
或运动采纳,必须先取得访问权限,才能选拔 SharePoint 数据财富。

工具:Chrome浏览器中的 Advanced Rest Client Application插件

     在 REST API 出现从前,大家必要经过 client.svc 这一个 WCF 服务来呼吁
SharePoint
的列表数据,而且仅限于获取数据。数据的改动并未在这几个服务中呈现。而透过
REST API,大家可以做到前边提到的 CRUD 操作:使用OData 标准协会可实现REST 的 HTTP
请求,对应到相应的呼吁方法,就足以对该财富拓展读取或操作了。例如使用 GET
方法赢得数据,使用 POST 方法来创建数量,使用 PUT 或 ME奥德赛GE
方法来更新数据,使用 DELETE 方法来删除数据。

 

      REST API 暗许会再次来到 Atom
格式的数量,不过大家也得以依据供给设定再次来到 JSON
格式的数目。小编个人更爱好处理 JSON 格式,JSON 数据转换为 C#
的对象,有一个很棒的网址:http://json2csharp.com/。通过那一个网站,大家能够把
JSON 数据直接转换为 C# 对象,节省了无数编辑 C# 基础代码的日子。

  1. Search REST API的query(GET)能够安装重临json格式的结果,存款和储蓄在data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results中,results是个数据集合,序号从0起首;

  2. 使用REST
    API获取(GET)数据时,若再次回到多条记下,则重回值存款和储蓄在data.d.results中,results是个数据集合,序号从0初步,每三个result包括贰个目的单元消息,例如:一个List
    Item的拥有属性,如代码所示;若再次回到单条记录,则重回值存款和储蓄在data.d中;

接下去我们来探望 REST API 的构造重组:

图片 1图片 2

      端点的基本UMuranoL是:https://server/site/_api ,它是负有 SharePoint
REST API 的根基,个中 server 代表服务器的称呼,site
代表一定网站的称谓或许路径。

{
"__metadata":{"id":"b719e719-e4cc-445c-9c7c-0250aba4338a",
"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)",
"etag":"\"4\"","type":"SP.Data.TasksListItem"},
"FirstUniqueAncestorSecurableObject":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/FirstUniqueAncestorSecurableObject"}},
"RoleAssignments":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/RoleAssignments"}},
"AttachmentFiles":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/AttachmentFiles"}},
"ContentType":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/ContentType"}},
"FieldValuesAsHtml":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/FieldValuesAsHtml"}},
"FieldValuesAsText":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/FieldValuesAsText"}},
"FieldValuesForEdit":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/FieldValuesForEdit"}},
"File":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/File"}},
"Folder":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/Folder"}},
"ParentList":{"__deferred":{"uri":"https://gjq-11683d04060f3b.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'b44e6daf-ee1e-4249-987f-2f9305cdc884')/Items(1)/ParentList"}},
"FileSystemObjectType":0,
"Id":1,
"ContentTypeId":"0x0108005943A401D04CAD47AE81ABAA54AA39A3",
"Title":"Test",
"PredecessorsId":{"__metadata":{"type":"Collection(Edm.Int32)"},"results":[]},
"Priority":"(2) Normal",
"Status":"Not Started",
"PercentComplete":0.79,
"AssignedToId":11,
"TaskGroupId":null,
"Body":"<div></div>",
"StartDate":"2014-08-10T16:00:00Z",
"DueDate":"2014-08-27T16:00:00Z",
"RelatedItems":null,
"WorkflowLink":null,
"OffsiteParticipant":null,
"OffsiteParticipantReason":null,
"WorkflowOutcome":null,
"WorkflowName":null,
"GUID":"2c618f60-7fae-4689-a652-52458ae60dd6",
"ID":1,
"Modified":"2014-08-12T03:41:59Z",
"Created":"2014-08-11T01:57:18Z",
"AuthorId":11,
"EditorId":11,
"OData__UIVersionString":"4.0",
"Attachments":false
}

     
要是要访问特定的网址集,URubiconL是:https://server/site/\_api/site,要是要拜访特定的网址,UHavalL则是:https://server/site/\_api/web
。那三种是最常用的 API ,还有两种 API
能完结部分一定的功能,如:使用搜索服务:https://server/site/\_api/search,访问用户配置文件:http://server/site/_api/SP.UserProfiles.PeopleManager 等。

View Code

      下边咱们以一定网址为例,来看一下 REST API
能成功哪些常见操作:

  1. 利用REST API的有的建议:

      (一)对列表和列表项的操作

  • If you’re not using the cross-domain library, include an X-RequestDigest header to send the form digest
    value in all POST requests and a content-lengthheader for POST requests that
    send data in the request body.

  • If you’re not making cross-domain requests, remove SP.AppContextSite(@target) and ?@target='<host web url>’ from the endpoint
    URI.

  • If you’re using OAuth, include an Authorization header (“Authorization”: “Bearer ” + <access token>) to
    send the OAuth access token.

  • If you want the server to return responses in Atom format, remove
    the “accept”: “application/json;
    odata=verbose” header.

       列表:

  1. 选取REST
    API获取对象音信时,只好取拿到近来级别音讯,类似于Client Object
    Model,比如 /_api/web/lists能够赢得全体list音信,但未曾list
    item的消息;例如:四个List的富有属性,

       URL:http://&lt;网站 URL>/web/lists(guid'<列表 ID>’) 或 http://&lt;网站 URL>/web/lists/getbytitle(‘title of
list’)

图片 3图片 4

      
列表项集合:

{
"__metadata":
  {
  "id":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')",
  "uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')",
  "etag":"\"3\"",
  "type":"SP.List"
  },
"FirstUniqueAncestorSecurableObject":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/FirstUniqueAncestorSecurableObject"}},
"RoleAssignments":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/RoleAssignments"}},
"ContentTypes":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/ContentTypes"}},
"CreatablesInfo":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/CreatablesInfo"}},
"DefaultView":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/DefaultView"}},
"DescriptionResource":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/DescriptionResource"}},
"EventReceivers":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/EventReceivers"}},
"Fields":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/Fields"}},
"Forms":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/Forms"}},
"InformationRightsManagementSettings":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/InformationRightsManagementSettings"}},
"Items":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/Items"}},
"ParentWeb":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/ParentWeb"}},
"RootFolder":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/RootFolder"}},
"TitleResource":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/TitleResource"}},
"UserCustomActions":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/UserCustomActions"}},
"Views":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/Views"}},
"WorkflowAssociations":{"__deferred":{"uri":"https://gjq-11683d04060f3f.sharepoint.com/BasicOperationApp/_api/Web/Lists(guid'9b64f833-6b28-4bf4-b02d-31e6f1d649e6')/WorkflowAssociations"}},
"AllowContentTypes":true,"BaseTemplate":100,"BaseType":0,"ContentTypesEnabled":false,"CrawlNonDefaultViews":false,"Created":"2014-08-12T05:22:25Z",
"DefaultContentApprovalWorkflowId":"00000000-0000-0000-0000-000000000000",
"Description":"",
"Direction":"none",
"DocumentTemplateUrl":null,
"DraftVersionVisibility":0,
"EnableAttachments":true,
"EnableFolderCreation":false,
"EnableMinorVersions":false,
"EnableModeration":false,
"EnableVersioning":false,
"EntityTypeName":"AccordionList",
"ForceCheckout":false,
"HasExternalDataSource":false,
"Hidden":false,
"Id":"9b64f833-6b28-4bf4-b02d-31e6f1d649e6",
"ImageUrl":"/_layouts/15itgen.png?rev=37",
"IrmEnabled":false,
"IrmExpire":false,
"IrmReject":false,
"IsApplicationList":false,
"IsCatalog":false,
"IsPrivate":false,
"ItemCount":3,
"LastItemDeletedDate":"2014-08-12T05:22:25Z",
"LastItemModifiedDate":"2014-08-13T06:16:41Z",
"ListItemEntityTypeFullName":"SP.Data.AccordionListItem",
"MultipleDataList":false,
"NoCrawl":false,
"ParentWebUrl":"/",
"ParserDisabled":false,
"ServerTemplateCanCreateFolders":true,
"TemplateFeatureId":"00bfea71-de22-43b2-a848-c05709900100",
"Title":"Accordion"
}

       URL:http://&lt;网站 URL>/web/lists(guid'<列表 ID>’) /items 或 http://&lt;网站 URL>/web/lists/getbytitle(‘title of
list’)/items

View Code

     
钦定 ID 的列表项:

  1. REST Search
    API时,默许的rowlimit是10,即默许重返10条记下;

  2. 采纳REST
    API的POST方法创制新剧情时,重回的音讯囤积在data.d中,比如data.d.Id;

  3. REST API
    无法改改文件夹的Name,详情请参考此处或者此处

      URL:http://&lt;网站 URL>/web/lists(guid'<列表 ID>’) /items(item id) 或 http://&lt;网站 URL>/web/lists/getbytitle(‘title of
list’)/items(item
id)

  1. REST
    API在更新file内容时,只好利用PUT,更新文件的metadata时,须要将文件作为多个item;

    If you want to update a file’s metadata, you’ll have to construct an endpoint that reaches the file as a list item. You can do this because each folder is also a list, and each file is also a list item. Construct an endpoint that looks like this: https:///_api/web/lists/getbytitle(‘Documents’)/items(). Working with lists and list items with REST explains how to update a list item’s metadata.

  2. 运用REST API获取item音讯时,Look
    Up字段会产生一些变通,比如:有1个之中名为Zone的列,查询出来的数目中找不到Zone列,而会有个ZoneId字段,值为被询问item的ID值;若是想获得Zone的突显名称,可应用$expand来获取:

    1. 在$select=中能够写上Zone/Id,Zone/ColumnX;
    2. 在$expand=中必须写上Zone;

      注:Zone为近日列表的Look up字段;ColumnX为被询问列表的其余字段的里边名称;

      
如上 API 地址所示,大家能够通过List 本人的 GUID 也许 Title
来收获List,可能List的项集合的数据。当须要向列表中插入新项时,大家须求运用列表项集合
API,使用 POST
方法插入数据。而必要修改列表中某1项时,则须要采纳钦赐列表项 API,使用
MECRUISERGE 方法来更新数据。

10.
假设不行使cross-domain类库,在展开POST操作时,都要在headers中添加X-RequestDigest参数,暗中同意赋值是$(“#__REQUESTDIGEST”).val();

      
而关系到数量修改时,大家要求把措施类型,如 POST,ME奥迪Q伍GE
等作为X-HTTP_Method
键的值添加到请求标头中。而且要求将呼吁窗体摘要值作为 X-RequestDigest
的值传递进入。该值的收获情势是:向 http://网站URL/\_api/contextinfo
出殡全数空正文的 POST 请求,并在 contextinfo 终结点重返的 XML 中领取
d:FormDigestValue 节点的值。还有正是标头中的 IF-MATCH
键的值,供给赋值为列表或列表项的 etag 值。若是赋值为
“*”,则不会设想并发难题。

1一.
过滤操作须要使用$filter,例如,只供给Title字段以“B”起头的数量:$filter=startswith(Title,
‘B’);只需求Title字段蕴涵“B”的数目:$filter=substringof(‘B’,Title);

      
其它关于数据操作是内需 POST 的内容:

图片 5

      
更新时,必须含有 __metadata:type
和供给更新的字段。其余不供给立异的字段能够不参加。删除时,U路虎极光L指向该条记录即可。添加时,U卡宴L指向记录集合,POST内容应涵盖__metadata:type 和内需插入的必填字段

  1. REST API – GET

           $.ajax({

                  url: "https://XXX.sharepoint.com/_api/web/lists/GetByTitle('XXX')/items",
                  type: "GET",
                  headers: {"Accept": "application/json;odata=verbose"},
                  success: function(data){
                      if(data.d.results){
                          var $selectObj = $("<select id='deptSelect'></select>");
                          $.each(data.d.results, function(index, item){
                              $selectObj.append($("<option></option>").attr("value", item.ID + item.Title).text(item.Title));
                          });
                          $("#getDiv").append($selectObj);
                          $("#getDiv").append("<br/>"+JSON.stringify(data.d.results));
                      }
                  },
                  error: function(xhr){
                      alert(xhr.status+': '+xhr.statusText);
                  }
              });
    

      (二)对文件和文件夹的操作

留神:由于劳动器端分页的限定,私下认可境况下,每趟只能获得100条数据,但能够动用$top参数来钦命一次要博得多少条数据,但最大无法跨越伍仟;还能使用__next来得到下壹页的⑩0条数据,请参见此处

       文件:

  1. REST API – POST (create)

            var newItem={

                  "__metadata":{"type": "SP.Data.Region_x0020_ApproversListItem"},
                  "Title": "Test Dept",
                  "Region": "GCN"
              };
    
              $.ajax({
                  url: "https://XXX.sharepoint.com/_api/web/lists/GetByTitle('XXX')/items",
                  type: "POST",
                  contentType: "application/json;odata=verbose",
                  data: JSON.stringify(newItem),
                  headers: {
                      "Accept": "application/json;odata=verbose",
                      "X-RequestDigest": $("#__REQUESTDIGEST").val()
                  },
                  success: function(data){
                      alert(JSON.stringify(data.d.Id));
                  },
                  error: function(xhr){
                      alert(xhr.status+': '+xhr.statusText);
                  }
              });
    
  2. REST API – POST (update)

            var updatedItem={

                  "__metadata":{"type":"SP.Data.Region_x0020_ApproversListItem"},
                  "Title": "Test Dept Again"
              };
    
            $.ajax({
                  url: "https://XXX.sharepoint.com/_api/web/lists/GetByTitle('XXX')/items(40)",
                  type: "POST",
                  contentType: "application/json;odata=verbose",
                  data: JSON.stringify(updatedItem),
                  headers:{
                      "ACCEPT": "application/json;odata=verbose",
                      "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                      "X-HTTP-METHOD": "MERGE",
                      "IF-MATCH": "*"
                  },
                  success: function(){ //此处没有data参数
                      getListItem();
                  },
                  error: function(xhr){
                      alert(xhr.status+': '+xhr.statusText);
                  }
              });
    
  3. REST API – DELETE

            $.ajax({

                  url: "https://XXX.sharepoint.com/_api/web/lists/GetByTitle('XXX')/items(43)",
                  type: "POST",
                  headers:{
                      "Accept": "application/json;odata=verbose",
                      "X-Http-Method": "DELETE",
                      "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                      "If-Match": "*"
                  },
                  success: function(data){
                      alert(JSON.stringify(data));
                  },
                  error: function(xhr){
                      alert(xhr.status+': '+xhr.statusText);
                  }
              });
    

       URL:http://&lt;网站
URL>/_api/web/getfilebyserverrelativeurl(‘/<文件夹名称>/<文件名称>’)

1陆.
在进行POST操作时,必要先获得metadata中的type属性值,方法是:http://XXXX/sites/XXX/\_api/web/lists/getbytitle('listName')?$select=ListItemEntityTypeFullName

       文件列表:

  1. SharePoint 201陆及 Office 36五支撑 REST
    API批量操作(Batch),可参照此处

  2. REST API
    使用的uri中,SharePoint名称(比如,列表名,列名)是深浅写敏感的,oData的名目是高低写不敏感;在动用$filter等原则语句进行筛选比较时,非数字类型值须求添加单引号,比如
    userName eq ‘ABC’;

  3. 利用REST API获取当前用户的记名名:

  4. 创设3个 Custom REST
    Service,可参看此文章;主要一点是:无需修改Web
    Config文件,只须求在.svc文件宣称中出席以下代码即可:

    <%@ ServiceHost Language="C#" Debug="true" Service="SPRESTService.CustomRESTService, $SharePoint.Project.AssemblyFullName$"

    CodeBehind="CustomRESTService.svc.cs" 
    Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory,
    Microsoft.SharePoint.Client.ServerRuntime, Version=15.0.0.0, Culture=neutral,
    PublicKeyToken=71e9bce111e9429c"%>
    

       URL:http://&lt;网站
URL>/_api/web/getfolderbyserverrelativeurl(‘/<文件夹名称>’)/files

如需在注解中选择 token 符
“$SharePoint.Project.AssemblyFullName$”,要求在project文件(.csproj文件)
中参与以下代码:

       文件夹:

<PropertyGroup>
    ...
    <SandboxedSolution>False</SandboxedSolution>
    <TokenReplacementFileExtensions>svc</TokenReplacementFileExtensions>
</PropertyGroup>

       URL:http://&lt;网站
URL>/_api/web/getfolderbyserverrelativeurl(‘/<文件夹名称>’)

  1. 在Custom REST Service时, 各种 OperationContract的
    Name属性用于标识那个操作,是唯一的,在再次来到值中得以反映出来,重返值为
    Name + ‘Result’,例如,在ajax回调函数中利用时即为
    response.GetAllPresidentsResult
    ;UriTemplate属性是造访此操作的门路,也是绝无仅有的;

       通过上述 API
操作,大家能够完毕文件和文件夹的读取,上传和改动等操作。

图片 6

       当必要向文书档案库插入文书档案时,U凯雷德L
是:http://&lt;site
url>/_api/web/GetFolderByServerRelativeUrl(‘/Shared
Documents’)/Files/add(url=’a.txt’,overwrite=true),那样,大家就把公文以
a.txt 为寄放名称插入到了 Shared Documents
文书档案库中。而文档内容的上传进程是:文件读取为 Stream,放入 POST
内容中。文件还有其余不少中操作方法,如更新,签出,签入,删除等。

  1. 若要获取一个web根目录下的持有folder,能够选用一下REST API:

    http://site url/_api/web/folders

      (三)对用户、组和剧中人物的操作

取得的结果便是在SPD中见到的规范:

       组:

图片 7

       URL:http://&lt;网站 URL>/_api/web/sitegroups(<组 ID>)

REST重返的结果可能还会包罗一下以”_vti_”起先的文书档案库或列表地址,这几个是FrontPage的遗产物,无需在意,详情可参照此文章

       用户:

  1. SharePoint REST API中的 /folders 和 /files
    接口都不得不获取当前文件夹下的 子文件夹 或然 文件,而无法递归读取全体子文件夹 或 文件;

    http://host url/sites/jacky/_api/Web/GetFolderByServerRelativeUrl(‘/sites/jacky/Documents’)/Files
    http://host url/sites/jacky/_api/Web/GetFolderByServerRelativeUrl(‘/sites/jacky/Documents’)/Folders

       URL:http://&lt;网站
URL>/_api/web/siteusers(@v)?@v='<登录名>’

而 /items 接口却得以取得多少个 list 可能 library
全部item,包涵文件和文书夹;

       角色:

http://host url/sites/jacky/_api/Web/Lists(guid'9957f1e6-a35a-4888-a770-d5325c5cfe74')/Items

       URL:http://&lt;网站
URL>/_api/web/roledefinitions(<剧中人物定义
ID>)

  1. $expand
    约等于扩张查询,将子查询对象的结果集成到当下本次调用中来,比如:

      (肆)对用户配置文件的操作

使用 http://host
url/sites/jacky/_api/Web/GetFolderByServerRelativeUrl(‘/sites/jacky/Documents’)

接口大家得以获取Documents 那几个文件夹的一部分音信,再次来到结果如下:

       URL:http://&lt;网站
url>/_api/sp.userprofiles.peoplemanager

图片 8

      (5)对字段的操作

比方加上$expand 对象,将 REST U途乐I
改为:http://host
url/sites/jacky/_api/Web/GetFolderByServerRelativeUrl(‘/sites/jacky/Documents’)?$expand=Folders,Files
 即
加上了 查询Folders 和 Files的子语句,再次回到的结果为:

       URL:http://&lt;网站 url>/_api/web/fields(‘<字段 id>’) 或 http://&lt;网站 url>/_api/web/lists(guid'<列表 id>’)/fields(‘<字段 id>’)

图片 9

       上边我们介绍了列表,文件夹等品类 API
的地址构造,接下去我们看看那一个请求地址中允许的查询参数都有怎么着:       

约等于,在查询当前文件夹消息的还要,也举办了上边四个查询,并将结果三回性再次来到:

       (1)$select 参数

http://host url/sites/jacky/_api/Web/GetFolderByServerRelativeUrl('/sites/jacky/Documents')/Files
http://host url/sites/jacky/_api/Web/GetFolderByServerRelativeUrl('/sites/jacky/Documents')/Folders

       如 SQL 中 Select 的行使方法,那里的 $select
也是鲜明请求重临的结果中供给包括怎么着字段,使用格局是:_api/web/lists/getByTitle(‘Books’)/items?$select=Author,Title,ISBN,那样大家就会在得到Books那些列表时,只得到作者,书名和ISBN四个有效字段。

25.
在选取$select时,如若急需选用的品质位于二个会聚(例如
results)中,那么在路径中得以忽略掉 results
(此为虚拟节点),直接写须要的习性,比如下图,假使急需采取Title属性,不必要写成:$select=ListItemAllFields/RoleAssignments/results/Member/Users/results/Title,直接写成
$select=ListItemAllFields/RoleAssignments/Member/Users/Title
即可;

       (2)$filter 参数

图片 10

       如 SQL 中 Where 的运用格局,那里的 $filter
是用来筛选数据的筛选标准,使用方法是:_api/web/lists/getByTitle(‘Books’)/items?$filter=Author
eq ‘Mark 特温’,那样大家就能取到 Books 列表中,Author 为 马克 Twain的数量。

26. 

       (3)$expand 参数

      
那些参数用于钦赐重临联接列表中的哪些投射字段。使用方式是:_api/web/lists/getByTitle(‘Books’)/items?$select=Title,PublishedBy/Name&$expand=PublishedBy,那里的照射字段是
PublishedBy。

       (4)$top 参数

      
这几个参数用户钦点再次回到结果集中的前N项,使用方法是:_api/web/lists/getByTitle(‘Books’)/items?$top=二,那样大家就会回来这几个结果集中的前两项(如不足两项则赶回全体数额)。

       (5)$skip 参数

      
那一个参数用于在结果集中跳过钦命数量的项,而回到剩余的项。使用格局是:_api/web/lists/getByTitle(‘Books’)/items?$skip=2,那样我们就会在再次回到结果中跳过前两项而回到别的的项,如结果不足两项,则赶回空结果集。

       (6)$orderby 参数

       这几个参数用于对结果集进行排序,如 SQL
中选择办法,分为升序和降序二种方法,以 asc 和 desc
关键字来标识。使用方法是:_api/web/lists/getByTitle(‘Books’)/items?$orderby=ID
desc。那样我们回来的结果集,就会以 ID 为正式来降序排列。 

       上边这张表,涵盖了 SharePoint REST API
中差不多全体的询问条件和数字、字符等的比较首要字。例如 $filter=Author eq
‘马克 特温’,正是筛选 Author 等于 马克 特温 的项,而 Author ne ‘马克特温’,则是筛选不等的项。这是针对性字符串的相比操作,而针对性数字的则囊括 
lt(小于)、le(小于等于)、gt(大于)、ge(大于等于)、eq(等于)和
ne(不对等)。还有针对日期和时间的可比符,见表中表达。

       图片 11 

       最终还涉及到三个授权的标题,如前方所说,远程访问都急需先授权才能访问能源。我们得以因而OAuth 授权的措施来成功应用授权和身份验证。将收获的 OAuth
访问令牌插手到请求标头中。那里大家不做详细介绍了。关于
API本身的选用进程,和别的 API
没什么差异,那里就不做详细介绍了。正是二个发出请求,得到再次来到结果(Atom或JSON),然后解析结果的进程。

       那样我们就把 SharePoint REST API
的结合和宗旨的选用办法介绍完了,希望对大家在 Windows 商店应用中应用
SharePoint REST API 有所扶助,多谢。

       

 

 

 

 

     

相关文章