Esempio di operazioni di base dell'API Web

 

Data di pubblicazione: gennaio 2017

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

Il gruppo di esempi illustra come eseguire operazioni associative CRUD (Create, Retrieve, Update e Delete) di base dall'API Web di Microsoft Dynamics 365. Questo esempio è implementato come un progetto distinto per le lingue seguenti:

In questo argomento viene descritto un set comune di operazioni implementato da ogni esempio in questo gruppo. In questo argomento vengono descritte le richieste HTTP, le risposte e l'output di testo che ogni esempio di questo gruppo eseguirà senza dettagli specifici della lingua. Vedere le descrizioni specifiche per linguaggio e gli esempi individuali per informazioni su come queste operazioni vengono eseguite.

Dimostra

Questo esempio è suddiviso nelle sezioni seguenti, contenenti operazioni dell'API Web di Dynamics 365 che vengono descritte in maggiore dettaglio negli specifici argomenti concettuali associati.

Sezione codice

Argomenti concettuali associati

Sezione 1: operazioni di creazione e aggiornamento di base

Creazione di base
Creazione con dati restituiti
Aggiornamento di base
Aggiornamento con dati restituiti

Sezione 2: creare con associazione

Associare le entità in fase di creazione

Sezione 3: Creare entità correlate (deep insert)

Creare entità correlate con un'unica operazione

Sezione 4: Associare e annullare l'associazione di entità esistenti

Associa e annulla associazione entità con l'API Web

Parte 5: eliminare entità (pulizia dell'esempio)

Eliminazione di base

Nota

Per brevità, le intestazioni HTTP meno pertinenti sono state omesse. Gli URL dei record varieranno con l'indirizzo base dell'organizzazione e l'ID del record assegnato dal server Dynamics 365.

Sezione 1: operazioni di creazione e aggiornamento di base

In questa sezione viene creato un singolo contatto che esegue una serie di aggiornamenti nell'istanza specifica. Si noti che l'intestazione di risposta OData-EntityId contiene l'URL di questo record appena creato (istanza di entità), che include parenteticamente l'ID univoco per il record.

  1. Creare un nuovo contatto denominato Peter Cambel.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/contacts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "firstname": "Peter",
      "lastname": "Cambel"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)
    

    Output della console

    Contact 'Peter Cambel' created.
    

    Le proprietà disponibili per ogni tipo sono definite nel documento dei metadati e sono inoltre documentate per ogni tipo nella sezione Web API EntityType Reference. Per altre informazioni generali, vedere Tipi e operazioni API Web.

  2. Aggiornare il contatto con i valori per il reddito annuale ($80,000) e la posizione (Junior Developer).

    Richiesta HTTP

    PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "annualincome": 80000,
      "jobtitle": "Junior Developer"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    

    Output della console

    Contact 'Peter Cambel' updated with job title and annual income.
    
  3. Recuperare il contatto con il suo set di proprietà inizializzate esplicitamente.fullname è una proprietà di sola lettura che viene calcolata dalle proprietà firstname e lastname, che erano state inizializzate esplicitamente alla creazione dell'istanza. Invece, la proprietà description non è stata inizializzata esplicitamente, quindi mantiene il relativo valore predefinito, una stringa null.

    Si noti che la risposta, oltre ai valori richiesti e le intestazioni tipiche, restituisce automaticamente anche i seguenti tipi di ulteriori informazioni:

    • L'ID primario per il tipo di entità corrente qui contactid.

    • Un valore ETag, denotato dalla chiave @odata.etag, che identifica la versione specifica della risorsa richiesta. Per ulteriori informazioni, vedere Eseguire operazioni condizionali tramite l'API Web.

    • Contesto dei metadati, denotato dalla chiave @odata.context offre un modo per confrontare i risultati della query per determinare se venissero dalla stessa query.

    • _transactioncurrencyid_value che indica la valuta locale della transazione monetaria.

    Richiesta HTTP

    GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,annualincome,jobtitle,description HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,annualincome,jobtitle,description)/$entity",
       "@odata.etag":"W/\"628883\"",
       "fullname":"Peter Cambel",
       "annualincome":80000.0000,
       "jobtitle":"Junior Developer",
       "description":null,
       "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
       "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03"
    }
    

    Output della console

    Contact 'Peter Cambel' retrieved:
            Income: 80000
            Job title: Junior Developer
            Description: .
    

    Importante

    È consigliabile utilizzare sempre la selezione e il filtro nelle operazioni di recupero per ottimizzare le prestazioni. Per ulteriori informazioni, vedere Query di dati tramite l'API Web.

  4. Aggiornare l'istanza dell'entità contatto fornendo nuovi valori alle stesse proprietà.

    Richiesta HTTP

    PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "jobtitle": "Senior Developer",
      "annualincome": 95000,
      "description": "Assignment to-be-determined"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    

    Output della console

    Contact 'Peter Cambel' updated:
            Job title: Senior Developer
            Annual income: 95000
            Description: Assignment to-be-determined
    

    Importante

    Inviare solo le proprietà modificate nelle richieste di aggiornamento. Per ulteriori informazioni, vedere Aggiornamento di base.

  5. Impostare in modo esplicito una singola proprietà, il numero di telefono primario. Si tratta di una richiesta PUT e la chiave JSON denominata value viene utilizzata quando si eseguono operazioni sulle singole proprietà.

    Richiesta HTTP

    PUT http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "value": "555-0105"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    

    Output della console

    Contact 'Peter Cambel' phone number updated.
    
  6. Recuperare la stessa singola proprietà, il numero di telefono primario. Notare ancora l'utilizzo della chiave denominata value.

    Richiesta HTTP

    GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1",
       "value":"555-0105"
    }
    

    Output della console

    Contact's telephone# is: 555-0105.
    
  7. Crea un contatto simile, ma restituisce anche le informazioni dell'istanza nella stessa operazione. Questa seconda funzionalità è abilitata dall'intestazione Prefer: return=representation. Questa funzionalità è stata introdotta con Aggiornamento di dicembre 2016 per Dynamics 365 (online e locale) e richiede la versione 8.2 o le versioni successive.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1
    OData-Version: 4.0
    Content-Type: application/json; charset=utf-8
    Prefer: return=representation
    {
      "firstname": "Peter_Alt",
      "lastname": "Cambel",
      "jobtitle": "Junior Developer",
      "annualincome": 80000,
      "telephone1": "555-0110"
    }
    

    Risposta HTTP

    HTTP/1.1 201 Created
    Content-Type: application/json; odata.metadata=minimal
    Preference-Applied: return=representation
    OData-Version: 4.0
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel"
    }
    

    Output della console

    Contact 'Peter_Alt Cambel' created:
            Annual income: 80000
            Job title: Junior Developer
    Contact URI: http://cc_WebAPI_ServiceURI/contacts(199250b7-6cbe-e611-80f7-00155da84c08)
    
  8. Aggiorna questo contatto simile e restituisce anche le informazioni dell'istanza nella stessa operazione. Anche in questo caso, questa seconda funzionalità è abilitata dall'intestazione Prefer: return=representation. Questa funzionalità è stata introdotta con Aggiornamento di dicembre 2016 per Dynamics 365 (online e locale) e richiede la versione 8.2 o le versioni successive.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1
    OData-Version: 4.0
    Content-Type: application/json; charset=utf-8
    Prefer: return=representation
    {
      "firstname": "Peter_Alt",
      "lastname": "Cambel",
      "jobtitle": "Junior Developer",
      "annualincome": 80000,
      "telephone1": "555-0110"
    }
    

    Risposta HTTP

    HTTP/1.1 201 Created
    Content-Type: application/json; odata.metadata=minimal
    Preference-Applied: return=representation
    OData-Version: 4.0
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel"
    }
    

    Output della console

    Contact 'Peter_Alt Cambel' updated:
            Annual income: 95000
            Job title: Senior Developer
    

Sezione 2: creare con associazione

In questa sezione viene creata una nuova istanza account denominata Contoso, Ltd. e associata a un contatto esistente, Peter Cambel, creato in Sezione 1: operazioni di creazione e aggiornamento di base. Questa creazione e associazione avviene in un'unica operazione POST.

  1. Creare l'account Contoso, Ltd. e impostarne l'attributo contatto primario sul contatto esistente Peter Cambel. L'annotazione @odata.bind indica che un'associazione viene creata, qui associando la proprietà di spostamento a valore singolo primarycontactid a un contatto esistente, Peter Cambel.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Contoso Inc",
      "telephone1": "555-5555",
      "primarycontactid@odata.bind": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)
    

    Output della console

    Account 'Contoso Inc' created.
    
  2. Recuperare il contatto primario per l'account Contoso, Ltd., di nuovo usando, $expand con la proprietà di spostamento a valore singolo primarycontactid per accedere al record contact EntityType associato.

    Richiesta HTTP

    GET http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity",
       "@odata.etag":"W/\"628886\"",
       "name":"Contoso Inc",
       "accountid":"65f77a42-5f0e-e611-80e0-00155da84c03",
       "primarycontactid":{ 
          "@odata.etag":"W/\"628885\"",
          "fullname":"Peter Cambel",
          "jobtitle":"Senior Developer",
          "annualincome":95000.0000,
          "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
          "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03"
       }
    }
    

    Output della console

    Account 'Contoso Inc' has primary contact 'Peter Cambel':
         Job title: Senior Developer
         Income: 95000
    

Sezione 3: Creare entità correlate (deep insert)

In questa sezione viene illustrato come creare un'istanza di entità e istanze di entità correlate, in una singola richiesta POST. Utilizzando questo metodo, tutte le istanze sono appena create; non sono presenti istanze esistenti da associare. Questo approccio ha due vantaggi. È più efficiente, sostituendo più operazioni più semplici di creazione e associazione con un'unica operazione combinata. Inoltre, è atomico, dove o l'intera operazione riesce e tutti gli oggetti correlati vengono creati, o l'operazione non riesce e nessun oggetto viene creato.

In questa sezione viene creato un account, il contatto primario e un set di attività per il contatto in un'unica richiesta.

  1. Creare un account Fourth Coffee e il contatto primario Susie Curtis e tre attività correlate in un'operazione. Notare l'utilizzo della proprietà di spostamento a valore singolo primarycontactid e la proprietà di spostamento con valori di raccolta Contact_Tasks per definire le relazioni, rispettivamente. Le proprietà di spostamento a valore singolo accettano un valore oggetto, mentre le proprietà di spostamento con valori di raccolta accettano un valore matrice.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Fourth Coffee",
      "primarycontactid": {
        "firstname": "Susie",
        "lastname": "Curtis",
        "jobtitle": "Coffee Master",
        "annualincome": 48000,
        "Contact_Tasks": [
          {
            "subject": "Sign invoice",
            "description": "Invoice #12321",
            "scheduledend": "2016-04-19T00:00:00-07:00"
          },
          {
            "subject": "Setup new display",
            "description": "Theme is - Spring is in the air",
            "scheduledstart": "2016-04-20T00:00:00-07:00"
          },
          {
            "subject": "Conduct training",
            "description": "Train team on making our new blended coffee",
            "scheduledstart": "2016-06-01T00:00:00-07:00"
          }
        ]
      }
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)
    

    Output della console

    Account 'Fourth Coffee' created.
    
  2. Recuperare in modo selettivo l'account Fourth Coffee appena creato e il contatto primario. Una espansione viene eseguita sulla proprietà di spostamento a valore singolo primarycontactid.

    Richiesta HTTP

    GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity",
       "@odata.etag":"W/\"628902\"",
       "name":"Fourth Coffee",
       "accountid":"6af77a42-5f0e-e611-80e0-00155da84c03",
       "primarycontactid":{ 
          "@odata.etag":"W/\"628892\"",
          "fullname":"Susie Curtis",
          "jobtitle":"Coffee Master",
          "annualincome":48000.0000,
          "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
          "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03"
       }
    }
    

    Output della console

    Account 'Fourth Coffee' has primary contact 'Susie Curtis':
            Job title: Coffee Master
            Income: 48000
    
  3. Recuperare in modo selettivo le attività associate al contatto primario recuperato nell'operazione precedente. Una espansione viene eseguita sulla proprietà di spostamento con valori di raccolta Contact_Tasks.

    Richiesta HTTP

    GET http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,&$expand=Contact_Tasks($select=subject,description,scheduledstart,scheduledend) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,Contact_Tasks,Contact_Tasks(subject,description,scheduledstart,scheduledend))/$entity",
       "@odata.etag":"W/\"628892\"",
       "fullname":"Susie Curtis",
       "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03",
       "Contact_Tasks":[ 
          { 
             "@odata.etag":"W/\"628903\"",
             "subject":"Sign invoice",
             "description":"Invoice #12321",
             "scheduledstart":"2016-04-19T00:00:00Z",
             "scheduledend":"2016-04-19T00:00:00Z",
             "activityid":"6cf77a42-5f0e-e611-80e0-00155da84c03"
          },
          { 
             "@odata.etag":"W/\"628905\"",
             "subject":"Setup new display",
             "description":"Theme is - Spring is in the air",
             "scheduledstart":"2016-04-20T00:00:00Z",
             "scheduledend":"2016-04-20T00:00:00Z",
             "activityid":"6df77a42-5f0e-e611-80e0-00155da84c03"
          },
          { 
             "@odata.etag":"W/\"628907\"",
             "subject":"Conduct training",
             "description":"Train team on making our new blended coffee",
             "scheduledstart":"2016-06-01T00:00:00Z",
             "scheduledend":"2016-06-01T00:00:00Z",
             "activityid":"6ef77a42-5f0e-e611-80e0-00155da84c03"
          }
       ]
    }
    

    Output della console

    Contact 'Susie Curtis' has the following assigned tasks:
    Subject: Sign invoice,
            Description: Invoice #12321
            Start: 4/19/2016
            End: 4/19/2016
    
    Subject: Setup new display,
            Description: Theme is - Spring is in the air
            Start: 4/20/2016
            End: 4/20/2016
    
    Subject: Conduct training
            Description: Train team on making our new blended coffee,
            Start: 6/1/2016
            End: 6/1/2016
    

Sezione 4: Associare e annullare l'associazione di entità esistenti

In questa sezione viene illustrato come associare e annullare l'associazione di istanze di entità esistenti. La formazione di un'associazione richiede l'utilizzo di un URI di riferimento e un oggetto di relazione, che vengono quindi inviati in una richiesta POST. L'annullamento dell'associazione richiede l'invio della richiesta DELETE all'URI di riferimento per tale associazione. Innanzitutto viene formata un'associazione uno-a-molti tra un contatto e un account. Quindi viene formata un'associazione molti-a-molti tra un concorrente e una o più opportunità.

  1. Aggiungere Peter Cambel come contatto all'account Fourth Coffee utilizzando la proprietà di spostamento con valori di raccolta contact_customer_accounts. Notare l'uso della chiave speciale @odata.id per specificare il record associato.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "@odata.id": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    

    Output della console

    Contact 'Peter Cambel' associated to account 'Fourth Coffee'.
    
  2. Confermare l'operazione precedente recuperando la raccolta di contatti per l'account Fourth Coffee. La risposta contiene la matrice con un singolo elemento, il contatto recentemente assegnato Peter Cambel.

    Richiesta HTTP

    GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts?$select=fullname,jobtitle HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,jobtitle)","value":[
        {
          "@odata.etag":"W/\"632481\"","fullname":"Peter Cambel","jobtitle":"Senior Developer","contactid":"00b6e0e2-b010-e611-80e1-00155da84c03"
        }
      ]
    }
    

    Output della console

    Contact list for account 'Fourth Coffee':
            Name: Peter Cambel, Job title: Senior Developer
    
  3. Rimuovere l'associazione appena creata tra l'account Fourth Coffee e il contatto Peter Cambel.

    Richiesta HTTP

    DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref?$id=http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    

    Output della console

    Contact 'Peter Cambel' dissociated from account 'Fourth Coffee'.
    
  4. Creare o un concorrente denominato Adventure Works.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/competitors HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Adventure Works",
      "strengths": "Strong promoter of private tours for multi-day outdoor adventures"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(77f77a42-5f0e-e611-80e0-00155da84c03) 
    

    Output della console

    Competitor 'Adventure Works' created.
    
  5. Creare un'opportunità denominata River rafting adventure.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/opportunities HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "River rafting adventure",
      "description": "Sales team on a river-rafting offsite and team building"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) 
    

    Output della console

    Opportunity 'River rafting adventure' created.
    
  6. Associare la nuova opportunità al nuovo concorrente. Si noti che la stessa sintassi generale viene utilizzata in tale associazione molti-a-molti come è stata utilizzata nella precedente associazione uno-a-molti.

    Richiesta HTTP

    POST http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "@odata.id": "http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    

    Output della console

    Opportunity 'River rafting adventure' associated with competitor 'Adventure Works'.
    
  7. Recuperare in modo selettivo tutte le opportunità associate al concorrente Adventure Works. Una matrice viene restituita contenente una singola opportunità.

    Richiesta HTTP

    GET http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=opportunitycompetitors_association($select=name,description) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 200 OK
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#competitors(name,opportunitycompetitors_association,opportunitycompetitors_association(name,description))/$entity",
       "@odata.etag":"W/\"628913\"",
       "name":"Adventure Works",
       "competitorid":"77f77a42-5f0e-e611-80e0-00155da84c03",
       "opportunitycompetitors_association":[ 
          { 
             "@odata.etag":"W/\"628917\"",
             "name":"River rafting adventure",
             "description":"Sales team on a river-rafting offsite and team building",
             "opportunityid":"7cf77a42-5f0e-e611-80e0-00155da84c03"
          }
       ]
    }
    

    Output della console

    Competitor 'Adventure Works' has the following opportunities:
            Name: River rafting adventure,
            Description: Sales team on a river-rafting offsite and team building
    
  8. Annullare l'associazione tra l'opportunità e il concorrente, Notare di nuovo che questa è la stessa sintassi generale usata per rimuovere l'associazione uno-a-molti.

    Richiesta HTTP

    DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref?$id=http://[Token-CRM-Org-Name]/Contoso/api/data/v8.1/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    

    Output della console

    Opportunity 'River rafting adventure' disassociated from competitor 'Adventure Works'.
    

Parte 5: eliminare entità (pulizia dell'esempio)

In questa sezione viene illustrato come eliminare istanze di entità. Il messaggio corrispondente è una semplice richiesta DELETE che utilizza l'URI dell'istanza di entità da eliminare. Se l'entità di destinazione ha una relazione padre-figlio con altre entità, eliminare il padre comporterà, per impostazione predefinita, l'eliminazione a catena automatica delle istanze figlio. Ad esempio, in questo esempio, le attività hanno il contatto come padre. Per ulteriori informazioni, vedere Comportamento della relazione di entità.

  1. Ogni elemento della raccolta di URL delle entità viene eliminato. Il primo è un record di contatto per Peter Cambel.

    Richiesta HTTP

    DELETE http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Risposta HTTP

    HTTP/1.1 204 No Content
    
  2. Le iterazioni successive nella raccolta eliminano i record rimanenti.

    Richiesta HTTP

    DELETE http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    

Vedere anche

Utilizzare l'API Web di Microsoft Dynamics 365
Creare un'entità utilizzando l'API Web
Recupera un'entità utilizzando l'API Web
Aggiorna ed elimina le entità con l'API Web
Associa e annulla associazione entità con l'API Web
Esempio di operazioni di base dell'API Web (C#)
Esempio di operazioni di base API Web (JavaScript lato client)

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright