Використання операцій записування, оновлення та видалення API веб-служб порталів
Можна виконувати доступні операції API веб-служб у порталах. Операції API веб-служб складаються із запитів та відповідей HTTP. У цій статті наведено приклади операцій записування, оновлення та видалення, методів, URI, а також зразок JSON, який можна використовувати в запитах HTTP.
Важливо
- Щоб ця функція працювала, версія порталу має бути 9.3.3.x або новішою.
вимоги
Увімкніть таблицю та поле для операцій API веб-служб. Додаткові відомості: Параметри сайту для API веб-служб
API веб-служб порталів отримує доступ до записів таблиць і стежить за дозволами таблиці, наданими користувачам за допомогою пов'язаних веб-ролей. Переконайтеся, що настроєно правильні дозволи для таблиці. Додаткові відомості: Створення веб-ролей
Створення запису в таблиці
Нотатка
У разі посилання на таблиці Dataverse з використанням API веб-служб порталів необхідно скористатися EntitySetName, наприклад для доступу до таблиці бізнес-партнера, у синтаксисі коду використовуватиметься EntitySetName бізнес-партнерів.
Базове створення
Операція | Спосіб зв’язку | URI | Зразок JSON |
---|---|---|---|
Базове створення | ЗАПИС | [Portal URI]/_api/accounts | {"name":"Sample Account"} |
Приклад JSON для створення записів пов'язаних таблиць за одну операцію
Наприклад, наведений нижче текст запиту, опублікований у наборі таблиць Бізнес-партнер, створить усього чотири нові таблиці – включно з бізнес-партнером – у контексті створення бізнес-партнера.
- Контакт створюється, оскільки його визначено як властивість об’єкта властивості навігації єдиного значення
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 | [Portal 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 | [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)"} |
Зразки веб-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 порталу