web-dev-qa-db-ja.com

SharePoint 2010 REST API JQUery挿入、更新、削除

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();

                   }
               });
           }
16
Fab

私は最近、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で使用できるいくつかの標準メソッドを強調しています

0
leeroya

SharePoint 2010を使用してCRUD操作を実行する方法RESTインターフェイス

作成

RESTを介して作成操作を実行するには、次のアクションを実行する必要があります。

  • POST動詞を使用してHTTPリクエストを作成します。
  • エンティティをPOSTのターゲットとして追加するリストのサービスURLを使用します。
  • コンテンツタイプを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リクエストを作成します。
  • GETのターゲットとしてエンティティを追加するリストアイテムのサービスURLを使用します。
  • コンテンツタイプを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ヘッダーを追加します。
  • 更新するリストアイテムのサービスURLをPOSTのターゲットとして使用します
  • エンティティの元のETagの値を含む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ヘッダーを追加します。
  • 更新するリストアイテムのサービスURLをPOSTのターゲットとして使用します
  • エンティティの元のETagの値を含む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 の記事によるリストアイテムの操作)の記事をご覧ください。

20

これが更新と削除です。思ったほど難しくなく、うまくいきました。 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();

                   }
               });

           }




           }
9
Fab