次の方法で共有


ポータル Web API を使用して、操作を書き込み、更新、および削除します

ポータルで、利用可能な WebAPI 操作 をおこなうことができます。 Web API 操作は、HTTP リクエストとレスポンスで構成されています。 この記事では、HTTP 要求で使用できるサンプルの書き込み、更新、削除の操作、メソッド、URI、サンプル JSON について説明します。

重要

  • この機能を使用するには、ポータルのバージョンが 9.3.3.x 以降である必要があります。

前提条件

  • Web API 操作のテーブルとフィールドを有効にします。 詳細:Web API のサイト設定

  • ポータル Web API は、テーブル レコードにアクセスし、関連した Web ロール からユーザーに与えられたテーブルのアクセス許可に従います。 正しいテーブル アクセス許可を構成していることを確認してください。 詳細: Web ロールを作成する

テーブルでレコードを作成する

注意

ポータルの Web API を使用して Dataverse テーブルを参照する場合、EntitySetName を使用する必要があります。例えば、account テーブルにアクセスする場合、コード構文では アカウント の EntitySetName が使用されます。

基本的な作成

オペレーション 方法 URI JSON サンプル
基本的な作成 POST [Portal URI]/_api/accounts {"name":"Sample Account"}

例として、アカウント テーブル セットに投稿された次の要求本文は、アカウントを作成する場合に、アカウントを含む合計 4 つの新しいテーブルを作成します。

  • 連絡先が作成されたのは、単一値のナビゲーション プロパティ primarycontactid のオブジェクト プロパティとして定義されているからです。
  • 営業案件が作成されたのは、コレクション値のナビゲーション プロパティ opportunity_customer_accounts の値に設定された配列内のオブジェクトとして定義されているからです。
  • タスクが作成されたのは、コレクション値のナビゲーション プロパティ Opportunity_Tasks の値に設定された配列内のオブジェクトとして定義されているからです。
{
 "name": "Sample Account",
 "primarycontactid":
 {
     "firstname": "Alton",
     "lastname": "Stott"
 },
 "opportunity_customer_accounts":
 [
  {
      "name": "Opportunity associated to Sample Account",
      "Opportunity_Tasks":
      [
       { "subject": "Task associated to opportunity" }
      ]
  }
 ]
}

作成時にテーブルレコードを関連付ける

Operation メソッド URI JSON サンプル
作成時にテーブルレコードを関連付ける POST [Portal URI]/_api/accounts {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"}

WebAPI を介して注釈を作成するためのサンプル JSON

{
    "new_attribute1": "test attribute 1",
    "new_attribute2": "test attribute 2",
    "new_comments": "test comments",
    "new_recordurl": recordURL,
    "new_feedback_Annotations":
        [
            {
                "notetext": "Screenshot attached",
                "subject": "Attachment",
                "filename": file.name,
                "mimetype": file.type,
                "documentbody": base64str,
            }
        ]
    }

documentbody は添付ファイルを base64 文字列として含みます。

Web API を使用してレコードを更新および削除する

基本的な更新

操作 メソッド URI JSON サンプル
基本的な更新 PATCH [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001) { "name": "Updated Sample Account ", "creditonhold": true, "address1_latitude": 47.639583, "description": "This is the updated description of the sample account", "revenue": 6000000, "accountcategorycode": 2 }

単一のプロパティ値の更新

操作 メソッド URI JSON サンプル
単一のプロパティ値の更新 PUT [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/name {"value": "Updated Sample Account Name"}

フィールド値の削除またはクリア

オペレーション メソッド URI
フィールド値の削除またはクリア DELETE [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/description

基本的な削除

操作 メソッド URI
基本的な削除 DELETE [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)

Web API を使用したテーブルの関連付けと関連付け解除

コレクション値ナビゲーション プロパティへの参照の追加

操作 メソッド URI JSON サンプル
コレクション値ナビゲーション プロパティへの参照の追加 投稿 [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"}

テーブルへの参照の削除

操作 メソッド URI
テーブルへの参照の削除 DELETE [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)

単一値のナビゲーション プロパティのテーブルへの参照を削除する

単一値のナビゲーション プロパティでは、$id クエリ文字列パラメーターを削除します。

操作 メソッド URI
単一値のナビゲーション プロパティのテーブルへの参照を削除する DELETE [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref

単一値ナビゲーション プロパティでの参照の変更

操作 メソッド URI JSON サンプル
単一値ナビゲーション プロパティでの参照の変更 PUT [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

作成時にテーブルを関連付ける

詳細な挿入を使用した関連付けを使用して、新しいテーブルを作成することができます。

単一値のナビゲーション プロパティを使用して、更新時にテーブルを関連付ける

このトピックの前半の 基本アップデート で説明されているのと同じメッセージを使用して更新時にテーブルを関連付けることが出来ますが、@odata.bind 注釈を使用して単一値のナビゲーション プロパティの値を設定することができます。 次の例では、customerid_account 単一値のナビゲーション プロパティを使用して営業案件に関連するアカウントを変更します。

単一値のナビゲーション プロパティを使用して、更新時にテーブルを関連付ける

操作 メソッド URI JSON サンプル
単一値のナビゲーション プロパティを使用して、更新時にテーブルを関連付ける PATCH [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Web API AJAX サンプル

このサンプルでは、非同期 JavaScript および XML (AJAX) を使用して、テーブル レコードを作成、更新、および削除する方法を示します。

ラッパー AJAX 関数

	(function(webapi, $){
		function safeAjax(ajaxOptions) {
			var deferredAjax = $.Deferred();
	
			shell.getTokenDeferred().done(function (token) {
				// add headers for AJAX
				if (!ajaxOptions.headers) {
					$.extend(ajaxOptions, {
						headers: {
							"__RequestVerificationToken": token
						}
					}); 
				} else {
					ajaxOptions.headers["__RequestVerificationToken"] = token;
				}
				$.ajax(ajaxOptions)
					.done(function(data, textStatus, jqXHR) {
						validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve);
					}).fail(deferredAjax.reject); //AJAX
			}).fail(function () {
				deferredAjax.rejectWith(this, arguments); // on token failure pass the token AJAX and args
			});
	
			return deferredAjax.promise();	
		}
		webapi.safeAjax = safeAjax;
	})(window.webapi = window.webapi || {}, jQuery)

Create

	webapi.safeAjax({
		type: "POST",
		url: "/_api/accounts",
		contentType: "application/json",
		data: JSON.stringify({
			"name": "Sample Account"
		}),
		success: function (res, status, xhr) {
      //print id of newly created table record
			console.log("entityID: "+ xhr.getResponseHeader("entityid"))
		}
	});

更新する

  webapi.safeAjax({
    type: "PATCH",
    url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
    contentType: "application/json",
    data: JSON.stringify({
      "name": "Sample Account - Updated"
    }),
    success: function (res) {
      console.log(res);
    }
  });

Delete

	webapi.safeAjax({
		type: "DELETE",
		url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
		contentType: "application/json",
		success: function (res) {
			console.log(res);
		}
  });

関連付け

次の例では、既存の取引先企業の取引先担当者を取引先責任者として割り当てます。

var record = {};
record[primarycontactid@odata.bind] = "/contacts(00000000-0000-0000-0000-000000000002)"; 

webapi.safeAjax({
  type: "PATCH",
  contentType: "application/json",
  url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
  data: JSON.stringify(record),
    success: function (data, textStatus, xhr) {
      console.log("Record updated");
    }
});

次のステップ

ハウツー: ポータル Web API を使用する

参照