Compartir por


Usar operacións de escritura, actualización e eliminación da API web de portais

Nota

A partir do 12 de outubro de 2022, Portais de Power Apps é Power Pages. Máis información: Microsoft Power Pages xa está dispoñible de forma xeral (blog)
Proximamente migraremos e uniremos a documentación de Portais de Power Apps coa documentación de Power Pages.

Pode realizar operacións de API web dispoñibles en portais. As operacións da API web consisten en solicitudes e respostas HTTP. Este artigo proporciona operacións de escritura, actualización e eliminación de exemplo, métodos, URI e o JSON de exemplo que pode usar nas solicitudes HTTP.

Importante

  • A súa versión do portal debe ser 9.3.3.x ou posterior para que esta función funcione.

Requisitos previos

  • Active a táboa e o campo para as operacións da API web. Máis información: Axustes do sitio para a API web

  • A API web de portais accede aos rexistros de táboas e segue os permisos de táboa dados aos usuarios a través dos roles web asociados. Asegúrese de configurar os permisos de táboa correctos. Máis información: Crear roles web

Crear un rexistro nunha táboa

Nota

Cando faga referencia a táboas de Dataverse usando a API web de portais, cómpre usar EntitySetName, por exemplo, para acceder á táboa de conta, a sintaxe do código usará EntitySetName de contas.

Creación básica

Operación Método URI JSON de exemplo
Creación básica Publicación [URI do portal]/_api/accounts {"nome": "Conta de exemplo"}

JSON de mostra para crear rexistros de táboa relacionados nunha operación

Como exemplo, o seguinte corpo de solicitude publicado no conxunto de táboas Conta creará un total de catro táboas novas, incluída a conta, no contexto da creación da conta.

  • Créase un contacto porque se define como unha propiedade de obxecto da propiedade de navegación de valor único primarycontactid.
  • Créase unha oportunidade porque se define como un obxecto dentro dunha matriz definida como o valor dunha propiedade de navegación con valor de colección opportunity_customer_accounts.
  • Créase unha tarefa porque se define como un obxecto dentro dunha matriz definida como o valor dunha propiedade de navegación con valor de colección 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" }
      ]
  }
 ]
}

Asociar rexistros de táboas ao crear

Operación Método URI JSON de exemplo
Asociar rexistros de táboas ao crear POST [URI do portal]/_api/accounts {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"}

JSON de mostra para crear unha anotación a través da API web

{
    "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 conterá o anexo como unha cadea base64.

Actualizar e eliminar rexistros mediante a API web

Actualización básica

Operación Método URI JSON de exemplo
Actualización básica PARCHE [URI do portal]/_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 }

Actualizar un valor único de propiedade

Operación Método URI JSON de exemplo
Actualizar un valor único de propiedade PUT [URI do portal]/_api/accounts(00000000-0000-0000-0000-000000000001)/name {"value": "Updated Sample Account Name"}

Eliminar ou borrar un valor de campo

Operación Método URI
Eliminar ou borrar un valor de campo DELETE [URI do portal]/_api/accounts(00000000-0000-0000-0000-000000000001)/description

Eliminación básica

Operación Método URI
Eliminación básica SUPR [URI do portal]/_api/accounts(00000000-0000-0000-0000-000000000001)

Asociar e desasociar táboas mediante a API web

Engadir unha referencia a unha propiedade de navegación con valor de colección

Operación Método URI JSON de exemplo
Engadir unha referencia a unha propiedade de navegación con valor de colección Publicación [URI do portal]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"}

Eliminar unha referencia a unha táboa

Operación Método URI
Eliminar unha referencia a unha táboa DELETE [URI do portal]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)

Eliminar unha referencia a unha táboa para unha propiedade de navegación de valor único

Para unha propiedade de navegación de valor único, elimine o parámetro de cadea de consulta $id.

Operación Método URI
Eliminar unha referencia a unha táboa para unha propiedade de navegación de valor único DELETE [URI do portal]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref

Cambiar a referencia nunha propiedade de navegación cun valor único

Operación Método URI JSON de exemplo
Cambiar a referencia nunha propiedade de navegación cun valor único PUT [URI do portal]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Asociar táboas ao crear

Pódense crear novas táboas con relacións usando a inserción profunda.

Asociar táboas ao actualizar usando unha propiedade de navegación de valor único

Pode asociar táboas na actualización empregando a mesma mensaxe descrita en Actualización básica anteriormente neste tema, pero debe usar a anotación @odata.bind para establecer o valor dunha propiedade de navegación de valor único. O seguinte exemplo cambia a conta asociada a unha oportunidade usando a propiedade de navegación de valor único customerid_account.

Asociar táboas ao actualizar usando unha propiedade de navegación de valor único

Operación Método URI JSON de exemplo
Asociar táboas ao actualizar usando unha propiedade de navegación de valor único PATCH [URI do portal]/_api/opportunities(00000000-0000-0000-0000-000000000001) {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Exemplos de AJAX de API web

Esta mostra mostra como crear, actualizar e eliminar rexistros de táboas usando JavaScript e XML asíncronos (AJAX).

Función de envoltorio 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)

Crear

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

SUPR

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

Seguinte paso

Titorial: usar a API web dos portais

Consulte tamén

Visión xeral da API web dos portais
Operacións de lectura de portais mediante a API web

Nota

Pode indicarnos as súas preferencias para o idioma da documentación? Realice unha enquisa breve. (teña en conta que esa enquisa está en inglés)

Esta enquisa durará sete minutos aproximadamente. Non se recompilarán datos persoais (declaración de privacidade).