Condividi tramite


Eseguire operazioni sui dati di base utilizzando l'endpoint OData

 

Data di pubblicazione: novembre 2016

Si applica a: Dynamics CRM 2015

Esistono varie librerie o tecnologie che è possibile utilizzare per eseguire le richieste HTTP per eseguire operazioni sui dati utilizzando l'endpoint OData con Aggiornamento di Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015. In questo argomento viene descritto il formato delle richieste HTTP a basso livello. Indipendentemente dalla libreria o dalla tecnologia in uso, con uno strumento proxy di debug Web come Fiddler è possibile esaminare il traffico HTTP e confrontare i risultati visualizzati con i requisiti dell'endpoint OData. In questo argomento vengono presentati degli esempi delle richieste e delle risposte HTTP acquisite utilizzando Fiddler. Alcuni contenuti di questi esempi sono stati modificati per brevità e, laddove il contenuto varierebbe in base a variabili di ambiente, sono stati inseriti dei <placeholders>.

Per ulteriori informazioni su applicazioni che utilizzano una tecnologia specifica, vedere: Utilizzare l'endpoint OData con risorse Web Ajax e JScript

In questo argomento

Creazione di record

  • Utilizzo di ATOM

  • Utilizzo di JSON

Recupero dei record

  • Utilizzo di ATOM

  • Utilizzo di JSON

Aggiornamento dei record

  • Aggiornare utilizzando PUT

  • Aggiornamento tramite MERGE

    • Utilizzo di ATOM

    • Utilizzo di JSON

Eliminazione di record

  • Utilizzo di ATOM

  • Utilizzo di JSON

Codici di stato HTTP

Creazione di record

Nuovi record, o voci, vengono creati eseguendo una richiesta HTTP POST per l'URI della raccolta dove deve essere creata la voce. La richiesta POST include la nuova voce nel proprio testo utilizzando il formato ATOM o JSON.

Tramite il server vengono assegnati dei valori predefiniti a tutte le proprietà non specificate nella richiesta. Il risultato viene restituito con un'intestazione "Location" contenente l'URL per il record che era stato creato. L'elemento titolo della voce riflette l'attributo primario dell'entità. Ad esempio, per l'entità account l'attributo primario è l'attributo name. Il codice di stato HTTP 201 indica che il record è stato creato correttamente.

Per ulteriori informazioni su un modo alternativo per creare nuovi record nel contesto di un record correlato, vedere Utilizzo dell'inserimento deep.

Utilizzo di ATOM

Ad esempio, quando viene creato un nuovo record dell'account utilizzando la libreria System.Data.Services.Client nel codice gestito.

Richiesta HTTP

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept:  application/atom+xml,application/xml
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26629
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
xmlns="http://www.w3.org/2005/Atom">
  <category 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
  />
  <title type="text">New Account Created</title>
  <author>
    <name />
  </author>
  <updated>2010-07-22T22:51:50.0051481Z</updated>
  <id />
  <content type="application/xml">
    <m:properties>
[ Properties removed for brevity]
    </m:properties>
   </content>
</entry>

Risposta HTTP

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 26756
Content-Type:  application/atom+xml;charset=utf-8
Location:  <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:49 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/" 
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
xmlns="http://www.w3.org/2005/Atom">
  <id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <title type="text">New Account Created</title>
  <updated>2010-07-22T22:51:50Z</updated>
  <author>
    <name />
  </author>
  <link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
  <category 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
  />
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
</m:properties>
  </content>
</entry>

In questo argomento

Utilizzo di JSON

Ad esempio, quando viene creato un nuovo record dell'account utilizzando l'oggetto XMLHttpRequest dal browser.

Richiesta HTTP

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 25
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

{"Name":"Sample Account"}

Risposta HTTP

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 17720
Content-Type:  application/json;charset=utf-8
Location: <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:40 GMT

{
"d" : {
"__metadata": {
"uri": "<organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')", 
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
[Properties removed for brevity]
 }
}

In questo argomento

Recupero dei record

Per recuperare i record viene utilizzato HTTP GET. Quando viene specificato un identificatore univoco per un record specifico, viene recuperato solo quel record. In caso contrario, verranno applicate tutte le opzioni di query di sistema che sono definite e verranno recuperati fino a 50 record corrispondenti ai filtri delle opzioni di query di sistema.

In questo argomento

Utilizzo di ATOM

Ad esempio, quando si recupera un singolo record dell'account utilizzando la libreria System.Data.Services.Client nel codice gestito.

Richiesta HTTP

GET <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept:  application/atom+xml,application/xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Risposta HTTP

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 28231
Content-Type:  application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/" 
   xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
   xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
   xmlns="http://www.w3.org/2005/Atom">
  <id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <title type="text">New Account Created </title>
  <updated>2010-07-22T22:51:51Z</updated>
  <author>
    <name />
  </author>
  <link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
  <category 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
  />
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
    </m:properties>
  </content>
</entry>

In questo argomento

Utilizzo di JSON

Ad esempio, quando si recupera un nuovo record dell'account utilizzando l'oggetto XMLHttpRequest dal browser.

Richiesta HTTP

GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Risposta HTTP

GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

In questo argomento

Aggiornamento dei record

In OData è possibile utilizzare il metodo PUT o il metodo MERGE per aggiornare i record.MERGE viene utilizzato per evitare di sovraccaricare il significato di PUT.

Una corretta risposta di aggiornamento contiene il codice di stato HTTP 204 e non restituisce alcun contenuto.

Nota

Per impostare valori di tipo complesso di Microsoft Dynamics 365 su null, impostare tutte le proprietà di tipo complesso su null. Per ulteriori informazioni, vedere Impostazione dei tipi complessi su null.

Nota

Alcune librerie potrebbero non includere il corpo della richiesta nell'invio di una richiesta PUT o MERGE al server. Per evitare il problema, OData supporta il tunneling del metodo tramite Post utilizzando l'operatore HTTP POST. Per utilizzare il tunneling del metodo, inviare un'operazione HTTP POST e impostare l'intestazione di X-HTTP-Method sull'operazione HTTP che si desidera eseguire. Ad esempio, per inviare una richiesta MERGE, l'operazione HTTP deve essere POST e l'intestazione HTTP di X-HTTP-Method deve essere MERGE.

Aggiornare utilizzando PUT

Importante

L'aggiornamento dei record utilizzando PUT sostituisce il record esistente con i dati forniti. Tutti i valori delle proprietà nel record accettano i valori specificati nella richiesta o vengono impostati sui rispettivi valori predefiniti se non sono inclusi nella richiesta. I collegamenti non vengono sostituiti.

Utilizzare PUT quando si aggiornano proprietà individuali. Per ulteriori informazioni, vedere Aggiornamento delle singole proprietà

Aggiornamento tramite MERGE

La tipica logica dell'aggiornamento in Microsoft Dynamics 365 corrisponde al comportamento che in genere viene definito utilizzando MERGE. I valori delle proprietà inclusi nella richiesta sono applicati solo a quelle proprietà. I dati delle altre proprietà restano invariati.

Importante

A meno che non si mitighi questo comportamento, quando si utilizzano le classi proxy nel codice gestito per aggiornare i record delle entità, viene utilizzato MERGE e tutte le proprietà vengono aggiornate. Ciò si verifica anche se i valori delle proprietà restano invariati. Ciò può causare effetti collaterali non desiderati quando altre funzionalità basate su eventi, come ad esempio i flussi di lavoro o i plug-in, rilevano che la proprietà è stata aggiornata. Inoltre, il controllo registrerà che la proprietà è stata aggiornata.

Inoltre, se un'istanza di entità viene avviata anziché essere recuperata, tutte le proprietà per l'entità vengono restituite con la richiesta MERGE. Qualsiasi proprietà che non è impostata nel codice sarà null. Questi valori null sovrascrivono i valori esistenti per il record.

Per mitigare questo comportamento, implementare un gestore eventi per gli eventi DataServiceContext,ReadingEntity e WritingEntity.

In questo argomento

Utilizzo di ATOM

Ad esempio, quando si aggiorna un record dell'account utilizzando la libreria System.Data.Services.Client nel codice gestito.

Richiesta HTTP

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: MERGE
Accept-Charset: UTF-8
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26753
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry 
   xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
   xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
   xmlns="http://www.w3.org/2005/Atom">
  <category 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
  />
  <title type="text">Account updated </title>
  <author>
    <name />
  </author>
  <updated>2010-07-22T22:51:51.0053481Z</updated>
  <id><organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
    </m:properties>
  </content>
</entry>

Risposta HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT

In questo argomento

Utilizzo di JSON

Ad esempio, quando si aggiorna un record dell'account utilizzando l'oggetto XMLHttpRequest dal browser.

Richiesta HTTP

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: MERGE
Content-Type:  application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 117
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

{"Name":"Updated Sample","Telephone1":"555-0123","AccountNumber":"ABCDEFGHIJ","EMailAddress1":"someone1@example.com"}

Risposta HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:41 GMT

Eliminazione di record

Utilizzare una richiesta POST con l'intestazione di X-HTTP-METHOD impostata su DELETE con un riferimento URI al record da eliminare.

Nota

Sebbene la specifica OData indichi che un'operazione di eliminazione corretta deve restituire un codice di stato HTTP 200 (OK), l'implementazione di Microsoft Dynamics 365 restituisce il codice 204 (nessun contenuto).

Per ulteriori informazioni, vedere Associazione e annullamento dell'associazione di record.

In questo argomento

Utilizzo di ATOM

Ad esempio, quando si elimina un record dell'account utilizzando la libreria System.Data.Services.Client nel codice gestito.

Richiesta HTTP

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: DELETE
Accept-Charset: UTF-8
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Risposta HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:54 GMT

In questo argomento

Utilizzo di JSON

Ad esempio, quando si elimina un record dell'account utilizzando l'oggetto XMLHttpRequest dal browser.

Richiesta HTTP

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: DELETE
Content-Type:  application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Risposta HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:57 GMT

In questo argomento

Codici di stato HTTP

I dettagli sui codici di stato HTTP restituiti sono disponibili in OData endpoint Http status codes.

Vedere anche

Utilizzare l'endpoint OData con risorse Web
Eseguire operazioni sui dati aggiuntive utilizzando l'endpoint OData
Utilizzare l'endpoint OData con risorse Web Ajax e JScript
OData endpoint Http status codes

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright