Используйте операции веб-API порталов для записи, обновления и удаления

Примечание

Действует с 12 октября 2022 г, в качестве порталов для Power Apps используется Power Pages. Дополнительная информация: Microsoft Power Pages теперь доступен для всех (блог)
Скоро мы мигрируем и объединим документацию порталов Power Apps с документацией Power Pages.

Вы можете выполнить доступные операции веб-API на порталах. Операции веб-API состоят из HTTP-запросов и ответов. В этой статье представлены образцы операций записи, обновления и удаления, методы, URI и образец JSON, которые вы можете использовать в HTTP-запросах.

Важно!

  • Для работы этой функции ваша версия портала должна быть 9.3.3.x или более поздней.

Предварительные условия

  • Включить таблицу и поле для операций веб-API. Больше информации: Настройки сайта для веб-API

  • Веб-API порталов обращается к записям таблиц и следует разрешениям таблиц, предоставленным пользователям через связанные веб-роли. Убедитесь, что вы настроили правильные разрешения для таблиц. Дополнительные сведения: Создание веб-ролей

Создание записи в таблице

Примечание

При ссылке на таблицы Dataverse с помощью веб-API портала вам необходимо использовать EntitySetName, например, для доступа к таблице account синтаксис кода будет использовать EntitySetName из accounts.

Базовое создание

Работа Способ URI Пример JSON
Базовое создание POST [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 Method 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.

Обновление и удаление записей с помощью веб-API

Базовое обновление

Operation Способ 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)

Связывание и удаление связывания таблиц с помощью веб-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=[Portal 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"))
        }
    });

Изменить

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

Следующий шаг

Учебник. Использование веб-API порталов

См. также

Обзор веб-API порталов
Операции чтение порталов с использованием веб-API

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).