SharePoint 2010 REST API JQUery插入,更新,删除

Fab*_*Fab 16 sharepoint sharepoint-2010

任何人都可以解释或指向我使用SharePoint 2010 Rest API使用Jquery进行更新,删除的示例链接吗?

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

另外,我想使用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();

                   }
               });
           }
Run Code Online (Sandbox Code Playgroud)

Vad*_*hev 20

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

创建

要通过REST执行Create操作,您必须执行以下操作:

  • 使用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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

用法

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));
  }
);
Run Code Online (Sandbox Code Playgroud)

要通过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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

用法

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

更新

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

  • 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);
   });

}
Run Code Online (Sandbox Code Playgroud)

用法

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));
  }
);
Run Code Online (Sandbox Code Playgroud)

删除

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

  • 使用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);
   });
}
Run Code Online (Sandbox Code Playgroud)

用法

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

有关详细信息,请在SharePoint 2010文章中通过REST API按照列表项操作进行操作.


Fab*_*Fab 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();

                   }
               });

           }




           }
Run Code Online (Sandbox Code Playgroud)

  • 当我在google上所有示例都用于Gets而其余示例都用于SPServices时,我感到很惊讶。难道没有人使用REST API吗?为什么没有关于CRUD的帖子,甚至连SP Pluralsight课程的作者都停止获取数据。 (2认同)

lee*_*oya -1

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

\n\n

使用邮递员

\n\n

首先获取您的摘要令牌:

\n\n

在此站点上找到了一种方法:http://tech.bool.se/basic-rest-request-sharepoint-using-postman/ \xe2\x80\x8b\n [信用到期的信用]

\n\n

邮政

\n\n
http://<SharePoint Domain Url>/sites/<Site name>/_api/contextinfo\n
Run Code Online (Sandbox Code Playgroud)\n\n

标题:

\n\n
Accept : application/json;odata=verbose\n
Run Code Online (Sandbox Code Playgroud)\n\n

正文: \n清除正文\xe2\x80\x8b

\n\n

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

\n\n

读取数据:

\n\n

得到

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

标题:

\n\n
Accept : application/json;odata=verbose\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

\xe2\x80\x8b创建数据\n POST

\n\n
http://<SharePoint Domain Url>/sites/<Site Name>/_api/web/folders\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

标题:

\n\n
Accept : application/json;odata=verbose\n\nX-RequestDigest : \'GUID looking toking\'\n\nContent-Type : application/json;odata=verbose\n
Run Code Online (Sandbox Code Playgroud)\n\n

身体:

\n\n
{ \'__metadata\': { \'type\': \'SP.Folder\' }, \'ServerRelativeUrl\': \'/Sites/<Site Name>/Shared Documents/Some Folder/POC3\'}\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

注: \n \'ServerRelativeUrl\'最后POC3的文件夹是我要创建的文件夹

\n\n

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

\n\n

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

\n\n

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

\n