Вставка, обновление, удаление, удаление
Может ли кто-нибудь объяснить или указать мне ссылку с образцами "Обновление", "Удалить" с помощью JQuery с API 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();
}
});
}
Ответы
Ответ 1
Недавно я работал с REST API для SP 2013, как пример POC, который можно использовать для любой реализации вызова, то есть JQuery, С# и т.д.
Использование POSTMAN
Сначала получите токен дайджеста:
На этом сайте найден метод: http://tech.bool.se/basic-rest-request-sharepoint-using-postman/
[Кредит, причитающийся кредит]
POST
http://<SharePoint Domain Url>/sites/<Site name>/_api/contextinfo
Заголовок:
Accept : application/json;odata=verbose
Тело
Очистить тело
Из полезной нагрузки используйте значение "FormDigestValue" и поместите ее в свои заголовки с помощью ключа: X-RequestDigest при выполнении действий, которые изменяют элементы в SharePoint.
Чтение данных:
GET
http://<SharePoint Domain Url>/sites/<Site name>/_api/web/getfolderbyserverrelativeurl('/Sites/<Site Name>/Shared Documents/My Folder')/files?$select=Name
Headers:
Accept : application/json;odata=verbose
Когда вы планируете создавать, обновлять и удалять, для выполнения этих действий вам нужен токен дайджеста или токен авторизации, этот токен выделяется в начале для извлечения.
Создание данных
POST
http://<SharePoint Domain Url>/sites/<Site Name>/_api/web/folders
Headers:
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
Ответ 2
Как выполнять операции CRUD с использованием интерфейса REST SharePoint 2010
Создать
Чтобы выполнить операцию Create через REST, вы должны выполнить следующие действия:
- Создайте HTTP-запрос, используя глагол
POST
.
- Используйте URL-адрес службы, в который вы хотите добавить объект, как
цель для POST.
- Задайте тип содержимого
application/json
.
- Сериализовать объекты JSON, которые представляют ваши новые элементы списка, как
string и добавьте это значение в тело запроса
Пример 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));
}
);
Read
Чтобы выполнить операцию чтения через REST, вы должны выполнить следующие действия:
- Создайте HTTP-запрос с помощью GET-глагола.
- Используйте 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));
}
);
Удалить
Чтобы удалить объект, вы должны выполнить следующие действия:
- Создайте HTTP-запрос, используя глагол
POST
.
- Добавьте заголовок
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));
}
);
Для более подробной информации, пожалуйста, следуйте Управлять списками элементов через REST API в SharePoint 2010.
Ответ 3
Вот обновление и удаление, это было не так сложно, как я думал, это будет, и это сработает.
Надеюсь, это поможет кому-то, потому что существует так много фиктивной информации об использовании REST API, и я вижу миллион сообщений при запросе, но ни один из них не добавлен в Insert, Update, Delete.
//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();
}
});
}
}