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