Поділитися через


Використання операцій записування, оновлення та видалення API веб-служб порталів

Можна виконувати доступні операції API веб-служб у порталах. Операції API веб-служб складаються із запитів та відповідей HTTP. У цій статті наведено приклади операцій записування, оновлення та видалення, методів, URI, а також зразок JSON, який можна використовувати в запитах HTTP.

Важливо

  • Для роботи цієї функції необхідно, щоб версія порталу була 9.3.3.x або вище.

вимоги

  • Увімкніть таблицю та поле для операцій API веб-служб. Додаткові відомості: Параметри сайту для API веб-служб

  • API веб-служб порталів отримує доступ до записів таблиць і стежить за дозволами таблиці, наданими користувачам за допомогою пов'язаних веб-ролей. Переконайтеся, що настроєно правильні дозволи для таблиці. Додаткові відомості: Створення веб-ролей

Створення запису в таблиці

Нотатка

У разі посилання на таблиці Dataverse з використанням API веб-служб порталів необхідно скористатися EntitySetName, наприклад для доступу до таблиці бізнес-партнера, у синтаксисі коду використовуватиметься EntitySetName бізнес-партнерів.

Базове створення

Операція Спосіб зв’язку URI Зразок JSON
Базове створення ЗАПИС [URI порталу]/_api/accounts {"name":"Sample Account"}

Наприклад, наведений нижче текст запиту, опублікований у наборі таблиць Бізнес-партнер, створить усього чотири нові таблиці – включно з бізнес-партнером – у контексті створення бізнес-партнера.

  • Контакт створюється, оскільки його визначено як властивість об’єкта властивості навігації єдиного значення 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" }
      ]
  }
 ]
}

Зв'язати записи таблиць під час створення

Операція Спосіб зв’язку URI Зразок JSON
Зв'язати записи таблиць під час створення POST [URI порталу]/_api/accounts {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"}

Приклад JSON для створення анотації за допомогою API веб-служб

{
    "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 [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 [URI порталу]/_api/accounts(00000000-0000-0000-0000-000000000001)/name {"value": "Updated Sample Account Name"}

Видалення або очищення значення поля

Операція Спосіб зв’язку URI
Видалення або очищення значення поля DELETE [URI порталу]/_api/accounts(00000000-0000-0000-0000-000000000001)/description

Базове видалення

Операція Метод URI
Базове видалення DELETE [URI порталу]/_api/accounts(00000000-0000-0000-0000-000000000001)

Зв'язування та скасування зв'язування таблиць за допомогою Web API

Додавання посилання на властивість навігації, що має значення типу Колекція

Операція Метод URI Зразок JSON
Додавання посилання на властивість навігації, що має значення типу Колекція ЗАПИС [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 [URI порталу]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[URI порталу]/_api/opportunities(00000000-0000-0000-0000-000000000001)

Видалення посилання на таблицю для однієї властивості переходу за значенням

Для властивості навігації із єдиним значенням видаліть параметр $id рядка запиту.

Операція Метод URI
Видалення посилання на таблицю для однієї властивості переходу за значенням DELETE [URI порталу]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref

Змінення посилання у властивості навігації із єдиним значенням

Операція Метод URI Зразок JSON
Змінення посилання у властивості навігації із єдиним значенням PUT [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 [URI порталу]/_api/opportunities(00000000-0000-0000-0000-000000000001) {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Зразки веб-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)

Створення

	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"))
		}
	});

Update

  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");
    }
});

Наступний крок

Посібник: використання API веб-служб порталів

Див. також