Usar las operaciones de escritura, actualización y eliminación de la API web de portales

Puede realizar operaciones de API web disponibles en portales. Las operaciones de la API web consisten en solicitudes y respuestas HTTP. Este artículo proporciona ejemplos de operaciones de escritura, actualización y eliminación, métodos, URI y el JSON de muestra que puede usar en las solicitudes HTTP.

Importante

  • La versión de su portal debe ser 9.3.3.x o posterior para que esta función funcione.

Requisitos previos

  • Habilite la tabla y el campo para las operaciones de la API web. Más información: onfiguración de sitio para la API web

  • La API web de los portales accede a los registros de la tabla y sigue los permisos de la tabla otorgados a los usuarios a través de los roles web asociados. Asegúrese de configurar los permisos de tabla correctos. Más información: Crear roles web

Crear un registro en una tabla

Nota

Al referirse a tablas de Dataverse usando la API web del portal, necesita usar EntitySetName, por ejemplo, para acceder a la tabla cuenta, la sintaxis del código utilizará el EntitySetName de cuentas.

Crear básico

Operación Método URI Ejemplo JSON
Crear básico POST [Portal URI]/_api/accounts {"name":"Cuenta de ejemplo"}

Como ejemplo, el siguiente cuerpo de solicitud publicado en el conjunto de tablas Cuenta creará un total de cuatro tablas nuevas, incluida la cuenta, en el contexto de la creación de la cuenta.

  • Se crea un contacto porque se define como una propiedad de objeto de la propiedad de navegación de valor único primarycontactid.
  • Se crea una oportunidad porque se define como un objeto dentro de una matriz que se establece en el valor de una propiedad de navegación valorada como colección opportunity_customer_accounts.
  • Se crea una tarea porque se define como un objeto dentro de una matriz que se establece en el valor de una propiedad de navegación valorada como 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 registros de tabla en la creación

Operation Method URI Ejemplo JSON
Asociar registros de tabla en la creación POST [Portal URI]/_api/accounts {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"}

Ejemplo de JSON para crear una anotación a través de la 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 contendrá el archivo adjunto como una cadena base64.

Actualizar y eliminar registros utilizando la API web

Actualización básica

Operación Método URI Ejemplo JSON
Actualización básica 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 }

Actualizar un solo valor de propiedad

Operación Método URI Ejemplo JSON
Actualizar un solo valor de propiedad PUT [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/name {"value": "Updated Sample Account Name"}

Eliminar o borrar un valor de campo

Operation Method URI
Eliminar o borrar un valor de campo DELETE [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/description

Eliminación básica

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

Asociar y anular la asociación de tablas mediante la API web

Agregue una referencia a una propiedad de navegación valorada como colección

Operación Método URI Ejemplo JSON
Agregue una referencia a una propiedad de navegación valorada como colección PUBLICAR [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"}

Quitar una referencia a una tabla

Operación Método URI
Quitar una referencia a una tabla DELETE [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)

Quitar una referencia a una tabla para una propiedad de navegación de un solo valor

Para una propiedad de navegación de un solo valor, quite el parámetro de cadena de consulta $id.

Operación Método URI
Quitar una referencia a una tabla para una propiedad de navegación de un solo valor DELETE [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref

Cambie la referencia en una propiedad de navegación de un solo valor

Operación Método URI Ejemplo JSON
Cambie la referencia en una propiedad de navegación de un solo valor PUT [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Asociar tablas en la creación

Se pueden crear nuevas tablas con Relaciones usando inserción profunda.

Asociar tablas en la actualización mediante una propiedad de navegación de un solo valor

Puede asociar tablas en la actualización utilizando el mismo mensaje descrito en Actualización básica, anteriormente en este tema, pero debes usar la anotación @odata.bind para establecer el valor de una propiedad de navegación de un solo valor. El siguiente ejemplo cambia la cuenta asociada a una oportunidad mediante el uso de la propiedad de navegación de un solo valor customerid_account.

Asociar tablas en la actualización mediante una propiedad de navegación de un solo valor

Operación Método URI Ejemplo JSON
Asociar tablas en la actualización mediante una propiedad de navegación de un solo valor PATCH [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Ejemplos de la API web AJAX

Este ejemplo demuestra cómo crear, actualizar y eliminar registros de tablas mediante JavaScript asincrónico y XML (AJAX).

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

Create

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

Asociar

El siguiente ejemplo asignará un contacto existente como contacto principal para una cuenta ya existente.

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

Siguiente paso

Cómo: Usar la API web del portal

Consulte también