Recupera un'entità utilizzando l'API Web

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Utilizzare una richiesta GET per recuperare i dati per un'entità specificata come la risorsa con un identificatore univoco. Quando recuperi un'entità puoi inoltre richiedere proprietà specifiche ed espandere le proprietà di navigazione per ritornare alle proprietà delle entità correlate.

Nota

Per ulteriori informazioni sul recupero dei metadati di entità, vedi Query sui metadati tramite la Web API.

In questo argomento

Esempio Recupero di base

Recupera proprietà specifiche

Recuperare utilizzando una chiave alternativa

Recupera un unico valore proprietà

Richiama i valori della proprietà di navigazione

Recupero entità correlate per un'entità espandendo le proprietà di navigazione

Opzioni da applicare alle entità espanse

Rileva se un'entità è cambiata da quando è stata recuperata

Recupera valori formattati

Esempio Recupero di base

In questo esempio vengono recuperati i dati per un'istanza di entità account con il valore della chiave primaria uguale a 00000000-0000-0000-0000-000000000001.

GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)

Per recuperare più entità alla volta, vedi Esempio query di base nell'argomento Query di dati tramite l'API Web.

Attenzione

Nell'esempio precedente verranno restituite le proprietà per il record di account, rispetto alle procedure consigliate delle prestazioni per il recupero dei dati. In questo esempio viene semplicemente illustrato come eseguire un recupero di base di un'istanza di entità in Dynamics 365. Poiché tutte le proprietà sono state restituite, non abbiamo incluso le informazioni di risposta alla richiesta in questo esempio.

Come procedura consigliata per le prestazioni, devi utilizzare sempre l'opzione della query di sistema $select per limitare le proprietà restituite durante il recupero di dati. Per ulteriori informazioni, vedi la sezione seguente, Recupera le proprietà specifiche.

Recupera proprietà specifiche

Utilizza l'opzione query di sistema $select per limitare le proprietà restituite includendo un elenco delimitato da virgole dei nomi di proprietà. Questa è un'importante procedura consigliata per le prestazioni. Se le proprietà non sono specificate utilizzando $select, vengono restituite tutte le proprietà.

Nel seguente esempio vengono recuperate le proprietà name e revenue per l'entità account con il valore della chiave primaria uguale a 00000000-0000-0000-0000-000000000001

  • Richiesta

    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)?$select=name,revenue HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Risposta

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
    "@odata.context": "cc_WebAPI_ServiceURI/$metadata#accounts(name,revenue)/$entity",
    "@odata.etag": "W/\"502186\"",
    "name": "A. Datum Corporation (sample)",
    "revenue": 10000,
    "accountid": "00000000-0000-0000-0000-000000000001",
    "_transactioncurrencyid_value":"b2a6b689-9a39-e611-80d2-00155db44581"
    }
    

Quando sono necessari alcuni tipi di proprietà puoi prevedere che vengano restituite automaticamente le proprietà di sola lettura aggiuntive.

Se è necessario un valore in denaro, la proprietà di ricerca _transactioncurrencyid_value sarà restituita. La proprietà contiene solo il valore GUID della valuta di transazione pertanto puoi utilizzare questo valore per recuperare le informazioni sulla valuta tramite transactioncurrency EntityType. In alternativa, richiedendo le annotazioni puoi anche ottenere dati aggiuntivi nella stessa richiesta.Ulteriori informazioni:Recuperare i dati sulle proprietà di ricerca

Se richiedi una proprietà che fa parte di un attributo composto per un indirizzo, analogamente otterrai la proprietà composita. Ad esempio, se la query richiede la proprietà address1_line1 per un contatto, viene restituita anche la proprietà address1_composite.Ulteriori informazioni:5bc03503-649d-42b5-a21f-e642c9923453#BKMK_CompositeAttributes.

Recuperare utilizzando una chiave alternativa

Se un'entità ha una chiave alternativa definita, puoi inoltre utilizzare la chiave alternativa per recuperare l'entità anziché l'identificatore univoco per l'entità. Ad esempio, se l'entità Contact ha una definizione di chiave alternativa che include sia le proprietà firstname che emailaddress1, puoi recuperare il contatto con una query con i dati forniti per tali chiavi come illustrato di seguito.

GET cc_WebAPI_ServiceURI/contacts(firstname='Joe',emailaddress1='abc@example.com')

Ogni volta che devi identificare in modo univoco un'entità da richiamare, aggiornare o eliminare, puoi utilizzare le chiavi alternative configurate per l'entità. Per impostazione predefinita, non ci sono chiavi alternative configurate per le entità. Le chiavi alternative saranno disponibili solo se l'organizzazione le aggiunge.

Recupera un unico valore proprietà

Quando è necessario recuperare il valore di una proprietà singola per un'entità, puoi aggiungere il nome della proprietà all'URI affinché un'entità restituisca solo il valore per tale proprietà. Questa è una procedura consigliata delle prestazioni perché in risposta deve essere restituito un minor numero di dati.

Questo esempio restituisce solo il valore della proprietà del nome per un'entità account.

  • Richiesta

    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)/name HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Risposta

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
    "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(00000000-0000-0000-0000-000000000001)/name",
    "value":"Adventure Works (sample)"
    }
    

Richiama i valori della proprietà di navigazione

Allo stesso modo puoi recuperare i valori di proprietà singoli, puoi inoltre accedere ai valori delle proprietà di navigazione (campi di tipo lookup) associando il nome della proprietà di navigazione all'URI facendo riferimento a un'entità singola.

Nell'esempio seguente viene restituito il nome completo del contatto primario di un account utilizzando la proprietà di navigazione a valore singolo primarycontactid.

  • Richiesta

    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)/primarycontactid?$select=fullname HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Risposta

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
    "@odata.context": "cc_WebAPI_ServiceURI/$metadata#contacts(fullname)/$entity",
    "@odata.etag": "W/\"500128\"",
    "fullname": "Rene Valdes (sample)",
    "contactid": "ff390c24-9c72-e511-80d4-00155d2a68d1"
    }
    

Per le proprietà di navigazione con i valori della raccolta hai la possibilità di richiedere di restituire solo i riferimenti alle entità correlate o solo un numero di entità correlate.

Nel seguente esempio verranno restituiti i riferimenti alle attività correlate a un account specifico aggiungendo /$ref alla richiesta.

  • Richiesta

    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)/AccountTasks/$ref HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Risposta

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
    "@odata.context": "cc_WebAPI_ServiceURI/$metadata#Collection($ref)",
    "value": [
    {
    "@odata.id": "cc_WebAPI_ServiceURI/tasks(6b5941dd-d175-e511-80d4-00155d2a68d1)"
    },
    {
    "@odata.id": "cc_WebAPI_ServiceURI/tasks(fcbb60ed-d175-e511-80d4-00155d2a68d1)"
    }
    ]
    }
    

Nell'esempio seguente viene restituito il numero di attività correlate a un account specifico utilizzando la proprietà di navigazione con valori della raccolta Account_Tasks con /$count associato.

  • Richiesta

    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)/Account_Tasks/$count HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Risposta

    2
    

Nota

Il valore restituito include caratteri BOM UTF-8 () che rappresentano che si tratta di un documento UTF-8.

Recupero entità correlate per un'entità espandendo le proprietà di navigazione

Utilizza l'opzione query di sistema $expand per controllare quali dati vengono restituiti dalle entità correlate. Sono disponibili due tipi di proprietà di navigazione:

  • Le proprietà di navigazione a valore singolo corrispondono agli attributi di tipo lookup che supportano relazioni molti-a.-uno e consentono l'impostazione di un riferimento a un'altra entità.

  • Le proprietà di navigazione con valori della raccolta corrispondono a relazioni uno-a-molti o molti-a-molti.

Se includi semplicemente il nome della proprietà di navigazione, riceverai tutte le proprietà dei record correlati. Puoi limitare le proprietà restituite per i record correlati utilizzando l'opzione della query di sistema $select tra parentesi dopo il nome della proprietà di navigazione. Utilizza questa opzione per le proprietà di navigazione a valore singolo e con i valori della raccolta.

Nota

Per recuperare le entità correlate per i set di entità, vedi Recupero entità correlate espandendo le proprietà di navigazione.

  • Recupera entità correlate per un'istanza di entità espandendo le proprietà di navigazione a valore singolo: nell'esempio seguente viene illustrato come recuperare il contatto per un'entità account. Per il record del contatto correlato, stai solo recuperando contactid e il nome completo.

    • Richiesta

      GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)?$select=name&$expand=primarycontactid($select=contactid,fullname) HTTP/1.1
      Accept: application/json
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • Risposta

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
      "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(contactid,fullname))/$entity",
      "@odata.etag":"W/\"550616\"",
      "name":"Adventure Works (sample)",
      "accountid":"00000000-0000-0000-0000-000000000001",
      "primarycontactid":{
      "@odata.etag":"W/\"550626\"",
      "contactid":"c59648c3-68f7-e511-80d3-00155db53318",
      "fullname":"Nancy Anderson (sample)"
      }
      }
      

    Invece di restituire le entità correlate per le istanze di entità, puoi inoltre restituire riferimenti (collegamenti) per le entità correlate espandendo la proprietà di navigazione a valore singolo con l'opzione $ref. Nel seguente esempio vengono restituiti collegamenti al record di contatto per l'entità account.

    • Richiesta

      GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)?$select=name&$expand=primarycontactid/$ref HTTP/1.1
      Accept: application/json
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • Risposta

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
      "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid)/$entity",
      "@odata.etag":"W/\"550616\"",
      "name":"Adventure Works (sample)",
      "accountid":"00000000-0000-0000-0000-000000000001",
      "_primarycontactid_value":"c59648c3-68f7-e511-80d3-00155db53318",
      "primarycontactid":{
      "@odata.id":"cc_WebAPI_ServiceURI/contacts(c59648c3-68f7-e511-80d3-00155db53318)"
      }
      }
      
    • Recupera le entità correlate per un'istanza di entità espandendo le proprietà di navigazione con valori di raccolta: nell'esempio seguente viene illustrato come poter recuperare tutte le attività assegnate a un record di account.

      • Richiesta

        GET cc_WebAPI_ServiceURI/accounts(915e89f5-29fc-e511-80d2-00155db07c77)?$select=name&$expand=Account_Tasks($select=subject,scheduledstart)
        Accept: application/json
        OData-MaxVersion: 4.0
        OData-Version: 4.0
        
      • Risposta

        HTTP/1.1 200 OK
        Content-Type: application/json; odata.metadata=minimal
        OData-Version: 4.0
        
        {
        "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name,Account_Tasks,Account_Tasks(subject,scheduledstart))/$entity",
        "@odata.etag":"W/\"514069\"","name":"Sample Child Account 1","accountid":"915e89f5-29fc-e511-80d2-00155db07c77",
        "Account_Tasks":[
        {
        "@odata.etag":"W/\"514085\"",
        "subject":"Sample Task 1",
        "scheduledstart":"2016-04-11T15:00:00Z",
        "activityid":"a983a612-3ffc-e511-80d2-00155db07c77"
        },{
        "@odata.etag":"W/\"514082\"",
        "subject":"Sample Task 2",
        "scheduledstart":"2016-04-13T15:00:00Z",
        "activityid":"7bcc572f-3ffc-e511-80d2-00155db07c77"
        }
        ]
        }
        

      Nota

      Se espandi i parametri di navigazione con i valori della raccolta per recuperare le entità correlate per set di entità, verrà restituita la proprietà @odata.nextLink invece delle entità correlate. Utilizza il valore della proprietà @odata.nextLink con una nuova richiesta GET per tornare ai dati richiesti.Ulteriori informazioni:Recupero entità correlate espandendo le proprietà di navigazione

  • Recupera le entità correlate per un'istanza di entità espandendo le proprietà di navigazione a valore singolo e con i valori della raccolta: l'esempio seguente illustra come espandere le entità correlate per un'istanza di entità sia con le proprietà di navigazione a valore singolo che con i valori della raccolta.

    • Richiesta

      GET cc_WebAPI_ServiceURI/accounts(99390c24-9c72-e511-80d4-00155d2a68d1)?$select=accountid&$expand=parentaccountid($select%20=%20createdon,%20name),Account_Tasks($select%20=%20subject,%20scheduledstart) HTTP/1.1
      Accept: application/json
      Content-Type: application/json; charset=utf-8
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • Risposta

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
      "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(accountid,parentaccountid,Account_Tasks,parentaccountid(createdon,name),Account_Tasks(subject,scheduledstart))/$entity","@odata.etag":"W/\"514069\"","accountid":"915e89f5-29fc-e511-80d2-00155db07c77",
      "parentaccountid":{
      "@odata.etag":"W/\"514074\"","createdon":"2016-04-06T00:29:04Z",
      "name":"Adventure Works (sample)",
      "accountid":"3adbf27c-8efb-e511-80d2-00155db07c77"
      },"Account_Tasks":[
      {
      "@odata.etag":"W/\"514085\"",
      "subject":"Sample Task 1",
      "scheduledstart":"2016-04-11T15:00:00Z",
      "activityid":"a983a612-3ffc-e511-80d2-00155db07c77"
      },{
      "@odata.etag":"W/\"514082\"",
      "subject":"Sample Task 2",
      "scheduledstart":"2016-04-13T15:00:00Z",
      "activityid":"7bcc572f-3ffc-e511-80d2-00155db07c77"
      }
      ]
      }
      

Nota

Non puoi utilizzare i segmenti del percorso /$ref o /$count per restituire solo l'URI per l'entità correlata o un conteggio del numero di entità correlate

Opzioni da applicare alle entità espanse

Puoi applicare alcune opzioni query di sistema alle entità restituite per una proprietà di navigazione con i valori della raccolta. Usa un elenco separato da punti e virgola delle opzioni query di sistema chiuse tra parentesi dopo il nome della proprietà di navigazione con i valori della raccolta. Puoi utilizzare $select, $filter, $orderby e $top.

Nel seguente esempio vengono filtrati i risultati delle entità di attività correlate a un account a quelle con un subject che termina con "1".

GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)?$expand=Account_Tasks($filter=endswith(subject,'1');$select=subject)

Nel seguente esempio vengono viene specificato che le attività correlate vengano restituite in ordine discendente in base alla proprietà createdon.

GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)?$expand=Account_Tasks($orderby=createdon asc;$select=subject,createdon)

Nel seguente esempio viene restituita solo la prima attività correlata.

GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)?$expand=Account_Tasks($top=1;$select=subject)

Nota

Si tratta delle opzioni di query di sistema come descritte nella sezione "11.2.4.2.1 Espandi opzioni" di OData Version 4.0 Part 1: Protocol Plus Errata 02. Le opzioni $skip, $count, $search, $expand e $levels non sono supportate per l'API Web.

Rileva se un'entità è cambiata da quando è stata recuperata

La procedura consigliata delle prestazioni dovrebbe richiedere solo i dati necessari. Se in precedenza hai recuperato un record di entità, puoi utilizzare l'ETag associato al record recuperato in precedenza per eseguire recuperi condizionali sul record. Per ulteriori informazioni, vedere Recuperi condizionali.

Recupera valori formattati

La richiesta dei valori formattati per i recuperi dei record singoli viene eseguita come quando si esegue la query dei set di entità.Ulteriori informazioni:Includere valori formattati.

Vedere anche

Esempio di operazioni di base dell'API Web (C#)
Esempio di operazioni di base API Web (JavaScript lato client)
Eseguire operazioni tramite l'API Web
Comporre richieste HTTP e gestire gli errori
Query di dati tramite l'API Web
Creare un'entità utilizzando l'API Web
Aggiorna ed elimina le entità con l'API Web
Associa e annulla associazione entità con l'API Web
Utilizzare le funzioni API Web
Utilizzare le azioni API Web
Eseguire operazioni in batch usando l'API Web
Rappresentare un altro utente usando l'API Web
Eseguire operazioni condizionali tramite l'API Web

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright