SharePoint 2010 Rest APIでJqueryを使用して更新、削除を行うサンプルのリンクを誰かが説明したり、リンクを示したりできますか?
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();
}
});
}
私は最近、REST API for SP 2013を使用して、JQuery、C#などの呼び出し実装に使用できるPOCの例として使用しました。
ポストマンの使用
最初にダイジェストトークンを取得します:
このサイトでメソッドが見つかりました: http://tech.bool.se/basic-rest-request-sharepoint-using-postman/[クレジットのあるクレジット期日]
[〜#〜]投稿[〜#〜]
http://<SharePoint Domain Url>/sites/<Site name>/_api/contextinfo
ヘッダー:
Accept : application/json;odata=verbose
Body:ボディをクリア
ペイロードから「FormDigestValue」値を使用し、SharePointのアイテムを変更するアクションを実行するときに、キーX-RequestDigestを使用してヘッダーに挿入します。
データの読み取り:
[〜#〜] get [〜#〜]
http://<SharePoint Domain Url>/sites/<Site name>/_api/web/getfolderbyserverrelativeurl('/Sites/<Site Name>/Shared Documents/My Folder')/files?$select=Name
ヘッダー:
Accept : application/json;odata=verbose
Create、update、deleteの場合、これらのアクションを実行するにはダイジェストトークンまたは認証トークンが必要です。このトークンは、取得を開始するときに強調表示されます。
データを作成しています[〜#〜] post [〜#〜]
http://<SharePoint Domain Url>/sites/<Site Name>/_api/web/folders
ヘッダー:
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で使用できるいくつかの標準メソッドを強調しています
作成
RESTを介して作成操作を実行するには、次のアクションを実行する必要があります。
POST
動詞を使用してHTTPリクエストを作成します。application/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を介して読み取り操作を実行するには、次のアクションを実行する必要があります。
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
リクエストを作成します。MERGE
という値を持つX-HTTP-Method
ヘッダーを追加します。POST
のターゲットとして使用しますIf-Match
ヘッダーを追加します。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リクエストを作成します。DELETE
という値を持つX-HTTP-Method
ヘッダーを追加します。If-Match
ヘッダーを追加します。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によるREST $ === API の記事によるリストアイテムの操作)の記事をご覧ください。
これが更新と削除です。思ったほど難しくなく、うまくいきました。 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();
}
});
}
}