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"} |
Ejemplo de JSON para crear registros de tablas relacionados en una operación
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