Usare le operazioni di scrittura, aggiornamento ed eliminazione dell'API Web dei portali

Puoi eseguire le operazioni API Web disponibili nei portali. Le operazioni API Web sono costituite da richieste e risposte HTTP. Questo articolo fornisce operazioni di scrittura, aggiornamento ed eliminazione di esempio, metodi, URI e JSON di esempio che puoi usare nelle richieste HTTP.

Importante

  • La versione del portale deve essere 9.3.3.x o successiva affinché questa funzionalità sia operativa.

Prerequisiti

  • Abilita la tabella e il campo per le operazioni dell'API Web. Maggiori informazioni: Impostazioni del sito per l'API Web

  • L'API Web dei portali accede ai record della tabella e segue le autorizzazioni della tabella fornite agli utenti tramite i ruoli web associati. Assicurati di configurare le autorizzazioni della tabella corrette. Più informazioni: Creare ruoli web

Creare un record in una tabella

Nota

Quando si fa riferimento alle tabelle Dataverse utilizzando l'API Web dei portali, è necessario utilizzare EntitySetName, ad esempio, per accedere alla tabella degli account, la sintassi del codice utilizzerà EntitySetName di account.

Creazione di base

Operation metodo URI Esempio JSON
Creazione di base POST [Portal URI]/_api/accounts {"name":"Sample Account"}

Ad esempio, il seguente corpo della richiesta registrato nel set di tabelle Account creerà un totale di quattro nuove tabelle, incluso l'account, nel contesto della creazione dell'account.

  • Un contatto viene creato perché è definito come una proprietà oggetto della proprietà di navigazione a valore singolo primarycontactid.
  • Un'opportunità viene creata perché è definita come oggetto all'interno di un array impostato sul valore di una proprietà di navigazione con valori di raccolta opportunity_customer_accounts.
  • Un'attività viene creata perché è definita come oggetto all'interno di un array impostato sul valore di una proprietà di navigazione con valori di raccolta 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" }
      ]
  }
 ]
}

Associare record di tabella durante la creazione

Operation metodo URI Esempio JSON
Associare record di tabella durante la creazione POST [Portal URI]/_api/accounts {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"}

JSON di esempio per la creazione di un'annotazione tramite 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 conterrà l'allegato come una stringa Base64.

Aggiornare ed eliminare i record usando l'API Web

Aggiornamento di base

Operazione Metodo URI Esempio JSON
Aggiornamento di base PATCH [URI portale]/_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 }

Aggiorna un unico valore proprietà

Operazione Metodo URI Esempio JSON
Aggiorna un unico valore proprietà PUT [URI portale]/_api/accounts(00000000-0000-0000-0000-000000000001)/name {"value": "Updated Sample Account Name"}

Elimina o cancella un valore di campo

Operation metodo URI
Elimina o cancella un valore di campo DELETE [URI portale]/_api/accounts(00000000-0000-0000-0000-000000000001)/description

Eliminazione di base

Operazione Metodo URI
Eliminazione di base CANC [URI portale]/_api/accounts(00000000-0000-0000-0000-000000000001)

Associare and disassociare tabelle con l'API Web

Aggiungi un riferimento a una proprietà di navigazione con i valori della raccolta

Operazione Metodo URI Esempio JSON
Aggiungi un riferimento a una proprietà di navigazione con i valori della raccolta POST [URI portale]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"}

Rimuovere un riferimento a una tabella

Operazione Metodo URI
Rimuovere un riferimento a una tabella DELETE [URI portale]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[URI portale]/_api/opportunities(00000000-0000-0000-0000-000000000001)

Rimuovere un riferimento a una tabella per una proprietà di navigazione a valore singolo

Per una proprietà di navigazione a valore singolo, rimuovi il parametro di stringa della query $id.

Operazione Metodo URI
Rimuovere un riferimento a una tabella per una proprietà di navigazione a valore singolo DELETE [URI portale]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref

Modifica il riferimento in una proprietà di navigazione a valore singolo

Operazione Metodo URI Esempio JSON
Modifica il riferimento in una proprietà di navigazione a valore singolo Percentuale di telespettatori [URI portale]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Associare tabelle durante la creazione

È possibile creare nuove tabelle con relazioni utilizzando l'insert deep.

Associare tabelle all'aggiornamento utilizzando una proprietà di navigazione a valore singolo

Puoi associare tabelle durante l'aggiornamento utilizzando lo stesso messaggio descritto in Aggiornamento di base all'inizio di questo argomento, ma devi usare l'annotazione @odata.bind per impostare il valore di una proprietà di navigazione a valore singolo. L'esempio seguente modifica l'account associato a un'opportunità utilizzando la proprietà di navigazione a valore singolo customerid_account.

Associare tabelle all'aggiornamento utilizzando una proprietà di navigazione a valore singolo

Operazione Metodo URI Esempio JSON
Associare tabelle all'aggiornamento utilizzando una proprietà di navigazione a valore singolo PATCH [URI portale]/_api/opportunities(00000000-0000-0000-0000-000000000001) {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Esempi di AJAX API Web

In questo esempio viene illustrato come creare, aggiornare ed eliminare record di tabella utilizzando JavaScript e XML asincrono (AJAX).

Funzione wrapper 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)

Creazione

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

Elimina

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

Associa

L'esempio seguente assegnerà un contatto esistente come contatto principale per un account esistente.

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

Passaggio successivo

Esercitazione: utilizzare l'API Web dei portali

Vedi anche