如何使用 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));
  }
);

更新

要更新現有實體,你必須執行以下操作:

使用 POST 動詞建立 HTTP 請求。新增 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));
  }
);