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