Используйте операции веб-API порталов для записи, обновления и удаления
Вы можете выполнить доступные операции веб-API на порталах. Операции веб-API состоят из HTTP-запросов и ответов. В этой статье представлены образцы операций записи, обновления и удаления, методы, URI и образец JSON, которые вы можете использовать в HTTP-запросах.
Внимание
- Для работы этой функции ваша версия портала должна быть 9.3.3.x или более поздней.
Предварительные условия
Включить таблицу и поле для операций веб-API. Больше информации: Настройки сайта для веб-API
Веб-API порталов обращается к записям таблиц и следует разрешениям таблиц, предоставленным пользователям через связанные веб-роли. Убедитесь, что вы настроили правильные разрешения для таблиц. Дополнительные сведения: Создание веб-ролей
Создание записи в таблице
Заметка
При ссылке на таблицы Dataverse с помощью веб-API портала вам необходимо использовать EntitySetName, например, для доступа к таблице account синтаксис кода будет использовать EntitySetName из accounts.
Базовое создание
Работа | Способ | URI | Пример JSON |
---|---|---|---|
Базовое создание | POST | [Portal URI]/_api/accounts | {"name":"Пример учетной записи"} |
Пример 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" }
]
}
]
}
Связывание записей таблицы при создании
Operation | Способ | 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.
Обновление и удаление записей с помощью веб-API
Базовое обновление
Operation | Способ | 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) |
Связывание и удаление связывания таблиц с помощью веб-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"))
}
});
Обновить
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 портала