zoukankan      html  css  js  c++  java
  • SharePoint REST API

    博客地址:http://blog.csdn.net/FoxDave

    本篇主要讲述如何用SharePoint REST操作列表和列表项。阅读本篇时请先了解前面讲述的REST介绍和基本操作。

    废话不多说了,下面开始。

    用REST获取列表属性

    当你知道一个列表的GUID时,你可以用下面的请求来获取这个列表对象。

    url: http://site url/_api/web/lists(guid'list GUID'),
    method: GET
    Headers:
        Authorization: "Bearer " + accessToken
        accept: "application/json;odata=verbose" or "application/atom+xml"
    如果你知道一个列表的标题,那么可以用下面的请求。

    url: http://site url/_api/web/lists/GetByTitle('Test')
    method: GET
    Headers:
        Authorization: "Bearer " + accessToken
        accept: "application/json;odata=verbose" or "application/atom+xml"
    下面是一个通过请求返回的XML结果示例,基本是跟API的属性对应的,就不做过多讲解了。

    <content type="application/xml">
        <m:properties>
            <d:AllowContentTypes m:type="Edm.Boolean">true</d:AllowContentTypes> 
            <d:BaseTemplate m:type="Edm.Int32">100</d:BaseTemplate> 
            <d:BaseType m:type="Edm.Int32">0</d:BaseType> 
            <d:ContentTypesEnabled m:type="Edm.Boolean">false</d:ContentTypesEnabled> 
            <d:Created m:type="Edm.DateTime">2012-06-26T23:15:58Z</d:Created> 
            <d:DefaultContentApprovalWorkflowId m:type="Edm.Guid">00000000-0000-0000-0000-000000000000</d:DefaultContentApprovalWorkflowId> 
            <d:Description>A list created by Project Based Retention used to store Project Policy Items.</d:Description> 
            <d:Direction>none</d:Direction> 
            <d:DocumentTemplateUrl m:null="true" /> 
            <d:DraftVersionVisibility m:type="Edm.Int32">0</d:DraftVersionVisibility> 
            <d:EnableAttachments m:type="Edm.Boolean">true</d:EnableAttachments> 
            <d:EnableFolderCreation m:type="Edm.Boolean">false</d:EnableFolderCreation> 
            <d:EnableMinorVersions m:type="Edm.Boolean">false</d:EnableMinorVersions> 
            <d:EnableModeration m:type="Edm.Boolean">false</d:EnableModeration> 
            <d:EnableVersioning m:type="Edm.Boolean">false</d:EnableVersioning> 
            <d:EntityTypeName>ProjectPolicyItemList</d:EntityTypeName> 
            <d:ForceCheckout m:type="Edm.Boolean">false</d:ForceCheckout> 
            <d:HasExternalDataSource m:type="Edm.Boolean">false</d:HasExternalDataSource> 
            <d:Hidden m:type="Edm.Boolean">true</d:Hidden> 
            <d:Id m:type="Edm.Guid">74de3ff3-029c-42f9-bd2a-1e9463def69d</d:Id> 
            <d:ImageUrl>/_layouts/15/images/itgen.gif</d:ImageUrl> 
            <d:IrmEnabled m:type="Edm.Boolean">false</d:IrmEnabled> 
            <d:IrmExpire m:type="Edm.Boolean">false</d:IrmExpire> 
            <d:IrmReject m:type="Edm.Boolean">false</d:IrmReject> 
            <d:IsApplicationList m:type="Edm.Boolean">false</d:IsApplicationList> 
            <d:IsCatalog m:type="Edm.Boolean">false</d:IsCatalog> 
            <d:IsPrivate m:type="Edm.Boolean">false</d:IsPrivate> 
            <d:ItemCount m:type="Edm.Int32">0</d:ItemCount> 
            <d:LastItemDeletedDate m:type="Edm.DateTime">2012-06-26T23:15:58Z</d:LastItemDeletedDate> 
            <d:LastItemModifiedDate m:type="Edm.DateTime">2012-06-26T23:15:59Z</d:LastItemModifiedDate> 
            <d:ListItemEntityTypeFullName>SP.Data.ProjectPolicyItemListItem</d:ListItemEntityTypeFullName> 
            <d:MultipleDataList m:type="Edm.Boolean">false</d:MultipleDataList> 
            <d:NoCrawl m:type="Edm.Boolean">true</d:NoCrawl> 
            <d:ParentWebUrl>/</d:ParentWebUrl> 
            <d:ServerTemplateCanCreateFolders m:type="Edm.Boolean">true</d:ServerTemplateCanCreateFolders> 
            <d:TemplateFeatureId m:type="Edm.Guid">00bfea71-de22-43b2-a848-c05709900100</d:TemplateFeatureId> 
            <d:Title>Project Policy Item List</d:Title> 
        </m:properties>
      </content>
    注意ListItemEntityTypeFullName这个属性,它重要的原因是当你需要创建或更新列表项时,必须传递该参数作为元数据metadata中的type属性。

    使用REST操作列表

    创建一个列表的请求如下所示。

    url: http://site url/_api/web/lists
    method: POST
    body: { '__metadata': { 'type': 'SP.List' }, 'AllowContentTypes': true, 'BaseTemplate': 100,
     'ContentTypesEnabled': true, 'Description': 'My list description', 'Title': 'Test' }
    Headers: 
        Authorization: "Bearer " + accessToken
        X-RequestDigest: form digest value
        accept: "application/json;odata=verbose"
        content-type: "application/json;odata=verbose"
        content-length:length of post body
    下面的代码演示了如何通过MERGE方法更新列表。

    url: http://site url/_api/web/lists(guid'list GUID')
    method: POST
    body: { '__metadata': { 'type': 'SP.List' }, 'Title': 'New title' }
    Headers: 
        Authorization: "Bearer " + accessToken
        X-RequestDigest: form digest value
        IF-MATCH": etag or "*"
        X-HTTP-Method: MERGE,
        accept: "application/json;odata=verbose"
        content-type: "application/json;odata=verbose"
        content-length:length of post body
    接下来的代码演示了如何向一个列表中添加自定义字段。

    Url: url: http://site url/_api/web/lists(guid'list GUID')/Fields
    Method:POST
    Body: { '__metadata': { 'type': 'SP.Field' }, 'Title': 'field title', 'FieldTypeKind': FieldType value,'Required': 'true/false', 'EnforceUniqueValues': 'true/false','StaticName': 'field name'}
    Headers: 
        Authorization: "Bearer " + accessToken
        X-RequestDigest: form digest value
        content-type: "application/json;odata=verbose"
        content-length:length of post body
    接下来是如何删除一个列表。
    url: http://site url/_api/web/lists(guid'list GUID')
    method: POST
    Headers: 
        Authorization: "Bearer " + accessToken
        X-RequestDigest: form digest value
        IF-MATCH: etag or "*"
        X-HTTP-Method: DELETE
    使用REST操作列表项
    下面的示例展示了如何获取列表中所有的列表项。

    url: http://site url/_api/web/lists/GetByTitle('Test')/items
    method: GET
    headers:
        Authorization: "Bearer " + accessToken
        accept: "application/json;odata=verbose" or "application/atom+xml"
    注意在查询列表项时,$skip需要改用$skiptoken。

    下面的示例展示了如何通过列表项ID获取指定的列表项。

    url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id)
    method: GET
    headers:
        Authorization: "Bearer " + accessToken
        accept: "application/json;odata=verbose" or "application/atom+xml"
    下面的XML是一个请求返回的示例。

    <content type="application/xml">
    <m:properties> 
    <d:FileSystemObjectType m:type="Edm.Int32">0</d:FileSystemObjectType>
    <d:Id m:type="Edm.Int32">1</d:Id>
    <d:ID m:type="Edm.Int32">1</d:ID>
    <d:ContentTypeId>0x010049564F321A0F0543BA8C6303316C8C0F</d:ContentTypeId>
    <d:Title>an item</d:Title>
    <d:Modified m:type="Edm.DateTime">2012-07-24T22:47:26Z</d:Modified>
    <d:Created m:type="Edm.DateTime">2012-07-24T22:47:26Z</d:Created>
    <d:AuthorId m:type="Edm.Int32">11</d:AuthorId>
    <d:EditorId m:type="Edm.Int32">11</d:EditorId>
    <d:OData__UIVersionString>1.0</d:OData__UIVersionString>
    <d:Attachments m:type="Edm.Boolean">false</d:Attachments>
    <d:GUID m:type="Edm.Guid">eb6850c5-9a30-4636-b282-234eda8b1057</d:GUID>
    </m:properties>
    </content>
    下面的代码演示如何创建一个列表项。

    url: http://site url/_api/web/lists/GetByTitle('Test')/items
    method: POST
    body: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'Test'}
    headers:
        Authorization: "Bearer " + accessToken
         X-RequestDigest: form digest value
        accept: "application/json;odata=verbose"
        content-type: "application/json;odata=verbose"
        content-length:length of post body
    注意这里你需要知道上面提到的ListItemEntityTypeFullName值并把它作为type参数传递。
    下面的代码展示了如何更新一个列表项。
    url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id)
    method: POST
    body: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'TestUpdated'}
    headers:
        Authorization: "Bearer " + accessToken
         X-RequestDigest: form digest value
        "IF-MATCH": etag or "*"
        "X-HTTP-Method":"MERGE",
        accept: "application/json;odata=verbose"
        content-type: "application/json;odata=verbose"
        content-length:length of post body
    接下来是删除列表项。
    url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id)
    method: POST
    headers:
        Authorization: "Bearer " + accessToken
         X-RequestDigest: form digest value
        "IF-MATCH": etag or "*"
        "X-HTTP-Method":"DELETE"
    另外说明一点,在用REST操作列表项时,如何需要考虑版本,可以使用ETag属性,具体可以到必应搜索了解一下,这里不做过多阐述了。

  • 相关阅读:
    python自动生成小学四则运算题目
    软件工程第一章心得体会
    Python微信机器人
    利用python进行微信好友分析
    python操作数据库读书笔记
    初学爬虫之访问goole网页与爬取中国大学排名。
    python之预测体育竞技分析
    5、用python写一个自己的网页
    用turtle实现动态汉诺塔
    面向对象与正则表达式的学习(自动更正,和代数运算)
  • 原文地址:https://www.cnblogs.com/justinliu/p/7703750.html
Copyright © 2011-2022 走看看