Ús de les operacions d'escriptura, actualització i supressió a l'API web dels portals
Podeu dur a terme operacions API web disponibles als portals. Les operacions de l'API web consisteixen en sol·licituds i respostes HTTP. En aquest article s'ofereixen operacions d'escriptura, actualització i supressió, mètodes, URI i JSON d'exemple que podeu utilitzar a les sol·licituds HTTP.
Important
- La versió del portal ha de ser 9.3.3.x o posterior per poder treballar amb aquesta característica.
Requisits previs
Habilitar la taula i el camp per a les operacions de l'API web. Més informació: Configuració del lloc per a l'API web
L'API web dels portals accedeix als registres de taula i segueix els permisos de taula atorgats als usuaris mitjançant les funcions web associades. Assegureu-vos de configurar els permisos de taula correctes. Més informació: Crear funcions web
Crear un registre en una taula
Nota
Quan feu referència a taules del Dataverse que utilitzen l'API web de portals, heu d'utilitzar EntitySetName; per exemple, per accedir a la taula compte, la sintaxi de codi utilitzarà l'EntitySetName comptes.
Creació bàsica
Operació | Mètode | URI | Exemple de JSON |
---|---|---|---|
Creació bàsica | Publica | [Portal URI]/_api/accounts | {"name":"Compte d'exemple"} |
JSON d'exemple per crear registres de taula relacionats en una operació
Per exemple, el cos de sol·licitud següent publicat al conjunt de taules Comptes crearà un total de quatre taules noves, incloent-hi la de comptes, en el context de la creació del compte.
- Un contacte es crea perquè s'ha definit com una propietat d'objecte de la propietat de navegació d'un sol valor
primarycontactid
. - Una oportunitat es crea perquè està definida com a objecte dins d'una matriu definida com a valor d'una propietat de navegació de col·lecció valuosa
opportunity_customer_accounts
. - Una tasca es crea perquè està definida com a objecte dins d'una matriu definida com a valor d'una propietat de navegació de col·lecció valuosa
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" }
]
}
]
}
Associar els registres de taula en crear-los
Operació | Mètode | URI | Exemple de JSON |
---|---|---|---|
Associar els registres de taula en crear-los | POST | [Portal URI]/_api/accounts | {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"} |
Exemple JSON per crear una anotació a través de l'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
contindrà el fitxer adjunt com a cadena Base64.
Actualitzar i suprimir registres mitjançant l'API web
Actualització bàsica
Operació | Mètode | URI | Exemple de JSON |
---|---|---|---|
Actualització 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 } |
Actualitzar el valor d'una única propietat
Operació | Mètode | URI | Exemple de JSON |
---|---|---|---|
Actualitzar el valor d'una única propietat | PUT | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/name | {"value": "Updated Sample Account Name"} |
Suprimir o esborrar un valor de camp
Operació | Mètode | URI |
---|---|---|
Suprimir o esborrar un valor de camp | DELETE | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/description |
Supressió bàsica
Operació | Mètode | URI |
---|---|---|
Supressió bàsica | Supr | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001) |
Associar i anul·lar l'associació de taules amb l'API web
Afegir una referència a una propietat de navegació de valor de col·lecció
Operació | Mètode | URI | Exemple de JSON |
---|---|---|---|
Afegir una referència a una propietat de navegació de valor de col·lecció | Publica | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref | {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"} |
Suprimir una referència a una taula
Operació | Mètode | URI |
---|---|---|
Suprimir una referència a una taula | DELETE | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) |
Suprimir una referència a una taula per a una propietat de navegació d'un valor
Per a una propietat de navegació de valor únic, suprimiu el paràmetre de cadena de consulta $id.
Operació | Mètode | URI |
---|---|---|
Suprimir una referència a una taula per a una propietat de navegació d'un valor | DELETE | [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref |
Canviar la referència d'una propietat de navegació de valor únic
Operació | Mètode | URI | Exemple de JSON |
---|---|---|---|
Canviar la referència d'una propietat de navegació de valor únic | PUT | [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref | {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"} |
Associar taules en crear-les
Les taules noves es poden crear amb relacions mitjançant la inserció profunda.
Associar les taules en actualitzar-les mitjançant una propietat de navegació d'un valor
Podeu associar les taules en actualitzar-les utilitzant el mateix missatge que es descriu a l'actualització bàsica, més aviat en aquest tema, però heu d'utilitzar l'anotació @odata.bind
per definir el valor d'una propietat de navegació d'un sol valor. L'exemple següent canvia el compte associat a una oportunitat mitjançant la propietat de navegació d'un sol valor customerid_account
.
Associar les taules en actualitzar-les mitjançant una propietat de navegació d'un valor
Operació | Mètode | URI | Exemple de JSON |
---|---|---|---|
Associar les taules en actualitzar-les mitjançant una propietat de navegació d'un valor | PATCH | [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) | {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"} |
Exemples d'AJAX de l'API web
Aquest exemple mostra com es creen, actualitzen i suprimeixen registres de taula mitjançant JavaScript asíncron i XML (AJAX).
Funció AJAX contenidora
(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)
Creació
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);
}
});
Associa
L'exemple següent assignarà un contacte existent com a contacte principal d'un compte existent.
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");
}
});
Pas següent
Tutorial: Utilitzar l'API web del portal