16

谁能解释或指向一个链接,其中包含使用 Jquery 和 SharePoint 2010 Rest API 进行更新、删除的示例?

我有插入工作,当然还有查询,因为 MSDN 文档解释了,网上的每个教程都解释了查询,但只是想知道是否有人插入、更新、删除数据,而不仅仅是关于查询的示例和教程?是的,我知道我可以使用 CSOM,但我想了解这是如何通过 jquery 和 sharepoint rest 完成的?

我也想使用 Merge 进行更新。

这是工作插入代码:

function insertMilestone() {
            var mileStonesListUrl = "/_vti_bin/listdata.svc/Milestones";    
               var milestone = {};
               milestone.Title = "Testing from REST";

               var entry = JSON.stringify(milestone);

               $.ajax({
                   type: "POST",
                   url: mileStonesListUrl,
                   data: entry,
                   contentType: "application/json; charset=utf-8",
                   error: function (xhr) {
                       alert(xhr.status + ": " + xhr.statusText);
                   },

                   success: function () {
                       getAll();

                   }
               });
           }
4

3 回答 3

21

如何使用 SharePoint 2010 REST 接口执行 CRUD 操作

创造

为了通过 REST 执行创建操作,您必须执行以下操作:

  • POST使用动词创建 HTTP 请求。
  • 使用要向其添加实体的列表的服务 URL 作为 POST 的目标。
  • 将内容类型设置为application/json
  • 将表示新列表项的 JSON 对象序列化为字符串,并将此值添加到请求正文

JavaScript 示例:

function createListItem(webUrl,listName, itemProperties, success, failure) {

    $.ajax({
        url: webUrl + "/_vti_bin/listdata.svc/" + listName,
        type: "POST",
        processData: false,
        contentType: "application/json;odata=verbose",
        data: JSON.stringify(itemProperties),
        headers: {
            "Accept": "application/json;odata=verbose"
        },
        success: function (data) {
            success(data.d);
        },
        error: function (data) {
            failure(data.responseJSON.error);
        }
    });
}

用法

var taskProperties = {
    'TaskName': 'Order Approval',
    'AssignedToId': 12
};

createListItem('https://contoso.sharepoint.com/project/','Tasks',taskProperties,function(task){
    console.log('Task' + task.TaskName + ' has been created'); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);

为了通过 REST 执行读取操作,您必须执行以下操作:

  • 使用 GET 动词创建 HTTP 请求。
  • 使用要向其添加实体的列表项的服务 URL 作为 GET 的目标。
  • 将内容类型设置为application/json

JavaScript 示例:

function getListItemById(webUrl,listName, itemId, success, failure) {
    var url = webUrl + "/_vti_bin/listdata.svc/" + listName + "(" + itemId + ")";
    $.ajax({
        url: url,
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: function (data) {
            success(data.d);
        },
        error: function (data) {
            failure(data.responseJSON.error);
        }
    });
}

用法

getListItemById('https://contoso.sharepoint.com/project/','Tasks',2,function(taskItem){
    console.log(taskItem.TaskName); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);

更新

要更新现有实体,您必须执行以下操作:

  • 使用动词创建HTTP请求。POST
  • 添加X-HTTP-Method一个值为 的标题MERGE
  • 使用要更新的列表项的服务 URL 作为POST
  • 添加具有If-Match实体原始 ETag 值的标头。

JavaScript 示例:

function updateListItem(webUrl,listName,itemId,itemProperties,success, failure)
{
   getListItemById(webUrl,listName,itemId,function(item){

      $.ajax({
         type: 'POST',
         url: item.__metadata.uri,
         contentType: 'application/json',
         processData: false,
         headers: {
                "Accept": "application/json;odata=verbose",
                "X-HTTP-Method": "MERGE",
                "If-Match": item.__metadata.etag
         },
         data: Sys.Serialization.JavaScriptSerializer.serialize(itemProperties),
         success: function (data) {
                success(data);
         },
         error: function (data) {
                failure(data);
         }
      });

   },
   function(error){
       failure(error);
   });

}

用法

var taskProperties = {
    'TaskName': 'Approval',
    'AssignedToId': 12  
};


updateListItem('https://contoso.sharepoint.com/project/','Tasks',2,taskProperties,function(item){
    console.log('Task has been updated'); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);

删除

要删除实体,您必须执行以下操作:

  • POST使用动词创建 HTTP 请求。
  • 添加X-HTTP-Method一个值为 的标题DELETE
  • 使用要更新的列表项的服务 URL 作为 POST 的目标
  • 添加具有If-Match实体原始 ETag 值的标头。

JavaScript 示例:

function deleteListItem(webUrl, listName, itemId, success, failure) {
    getListItemById(webUrl,listName,itemId,function(item){
        $.ajax({
            url: item.__metadata.uri,
            type: "POST",
            headers: {
                "Accept": "application/json;odata=verbose",
                "X-Http-Method": "DELETE",
                "If-Match": item.__metadata.etag
            },
            success: function (data) {
                success();
            },
            error: function (data) {
                failure(data.responseJSON.error);
            }
        });
    },
   function (error) {
       failure(error);
   });
}

用法

deleteListItem('https://contoso.sharepoint.com/project/','Tasks',3,function(){
    console.log('Task has been deleted'); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);

请关注SharePoint 2010文章中通过 REST API 进行的列表项操作以了解更多详细信息。

于 2014-11-21T08:28:45.873 回答
9

这是更新和删除,它并不像我想象的那么难,而且它有效。希望这会对某人有所帮助,因为关于使用 REST API 的虚假信息太多了,我看到无数关于查询的帖子,但没有关于插入、更新、删除的帖子。

//update
           function updateMilestone(id) {

               var mileStonesUrl = "/_vti_bin/listdata.svc/Milestones";
               mileStonesUrl = mileStonesUrl + "(" + id+ ")";


               var beforeSendFunction;

               var milestoneModifications = {};
               milestoneModifications.Title = "Updated from REST";

               var updatedMilestoneData = JSON.stringify(milestoneModifications);


               //update exsiting milestone
               beforeSendFunction = function (xhr) {
                   xhr.setRequestHeader("If-Match", "*");
                   // Using MERGE so that the entire entity doesn't need to be sent over the wire.
                   xhr.setRequestHeader("X-HTTP-Method", 'MERGE');
               }

               $.ajax({
                   type: "POST",
                   contentType: "application/json; charset=utf-8",
                   processData: false,
                   beforeSend: beforeSendFunction,
                   url: mileStonesUrl,
                   data: updatedMilestoneData,
                   dataType: "json",
                   error: function (xhr) {
                       alert(xhr.status + ": " + xhr.statusText);
                   },

                   success: function () {
                       alert("Updated");
                       getAll();

                   }
               });




     function deleteMilestone(id) {

               var mileStonesUrl = "/_vti_bin/listdata.svc/Milestones";
               mileStonesUrl = mileStonesUrl + "(" + id+ ")";

               $.ajax({
                   type: "DELETE",
                   contentType: "application/json; charset=utf-8",
                   processData: false,                       
                   url: mileStonesUrl,                     
                   error: function (xhr) {
                       alert(xhr.status + ": " + xhr.statusText);
                   },
                   success: function () {
                       alert("deleted");
                       getAll();

                   }
               });

           }




           }
于 2013-07-23T21:28:52.650 回答
-1

我最近使用 SP 2013 的 REST API 作为示例 POC,可用于任何调用实现,即 JQuery、C# 等。

使用邮递员

首先获取您的摘要令牌:

在此站点上找到了一种方法:http: //tech.bool.se/basic-rest-request-sharepoint-using-postman/ ​[ Credit where credit is due]

邮政

http://<SharePoint Domain Url>/sites/<Site name>/_api/contextinfo

标题:

Accept : application/json;odata=verbose

身体: 清除身体​</p>

从有效负载中使用“FormDigestValue”值并将其放入带有键的标题中:X-RequestDigest 在执行更改 SharePoint 中的项目的操作时。

读取数据:

得到

http://<SharePoint Domain Url>/sites/<Site name>/_api/web/getfolderbyserverrelativeurl('/Sites/<Site Name>/Shared Documents/My Folder')/files?$select=Name

标题:

Accept : application/json;odata=verbose​

当涉及到创建、更新、删除时,您需要摘要令牌或授权令牌来执行这些操作,该令牌在开始检索时会突出显示。

​创建数据 POST

http://<SharePoint Domain Url>/sites/<Site Name>/_api/web/folders​

标题:

Accept : application/json;odata=verbose

X-RequestDigest : 'GUID looking toking'

Content-Type : application/json;odata=verbose

身体:

{ '__metadata': { 'type': 'SP.Folder' }, 'ServerRelativeUrl': '/Sites/<Site Name>/Shared Documents/Some Folder/POC3'}​

注意: 'ServerRelativeUrl' POC3 末尾的文件夹是我要创建的文件夹

相关资源: http: //msdn.microsoft.com/en-us/library/office/fp142380 (v=office.15).aspx

注意:此示例使用 PostMan,其他应用程序可能需要您对端点进行 url 编码。

上述请求结构可用于所有请求,相关资源重点介绍了可与 REST Api 一起使用的一些标准方法

于 2014-11-20T06:06:10.707 回答