Condividi tramite


Eseguire operazioni in batch usando l'API Web

 

Data di pubblicazione: gennaio 2017

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

Puoi raggruppare più operazioni in un'unica richiesta HTTP mediante di un'operazione in batch.

In questo argomento

Quando usare le richieste batch

Richieste batch

Set di modifiche

Esempio

Quando usare le richieste batch

Il valore fornito dalle richieste batch è che possono includere i set delle modifiche, che offrono un modo per combinare una serie di operazioni che riesce o meno come gruppo. in una transazione confrontata con altre operazioni che possono essere eseguite tramite Web API, sono più difficili da comporre senza un modello a oggetti che include la serializzazione di oggetti o una conoscenza più approfondita del protocollo HTTP perché il messaggio della richiesta è essenzialmente un documento di testo che deve soddisfare requisiti molto specifici.

Ricorda che è possibile creare più facilmente entità associate in un'unica operazione rispetto all'uso di una richiesta batch. Le richieste batch sono ottimali per eseguire operazioni su entità non associate tra loro quando tutte le operazioni devono essere eseguite in un'unica operazione transazionale.

Inoltre, le risposte restituite sono essenzialmente documenti di testo e non oggetti facilmente analizzabili in JSON. Dovrai analizzare il testo nella risposta o individuare una libreria di supporto per accedere ai dati nella risposta.

Richieste batch

Usa una richiesta POST per inviare un'operazione in blocco che contiene più richieste. Una richiesta batch può includere le richieste GET e i set di modifiche. Per utilizzare le funzionalità transazionali delle richieste batch, solo le operazioni che cambieranno i dati possono essere incluse in un set di modifiche. Le richieste GET non devono essere incluse nel set di modifiche.

La richiesta POST contenente il batch deve avere un'intestazione Content-Type con un valore impostato su multipart/mixed con un limite impostato per includere l'identificatore del batch che usa questo pattern:

--batch_<unique identifier>

L'identificatore univoco non deve essere un GUID, ma deve essere univoco. Ogni elemento nel batch deve essere preceduto dall'identificatore batch con un'intestazione Content-Type e Content-Transfer-Encoding come illustrato di seguito:

--batch_WKQS9Yui9r
Content-Type: application/http
Content-Transfer-Encoding:binary

La fine di un batch deve contenere un indicatore di chiusura come illustrato di seguito:

--batch_WKQS9Yui9r--

Nota

La preferenza odata.continue-on-error non supportata dall'API Web. Eventuali errori che si verificano nel batch interromperanno l'elaborazione del resto del batch.

Set di modifiche

Se più operazioni sono contenute in un set di modifiche, tutte le operazioni sono considerate atomiche, il che significa che se una delle operazioni non riesce, le eventuali operazioni completate verranno invertite. Analogamente a una richiesta batch, i set di modifiche devono avere un'intestazione Content-Type con un valore impostato su multipart/mixed con un limite impostato per includere l'identificatore del set di modifiche che usa questo pattern:

--changeset_<unique identifier>

L'identificatore univoco non deve essere un GUID, ma deve essere univoco. Ogni elemento nel set di modifiche deve essere preceduto dall'identificatore set di modifiche con un'intestazione Content-Type e Content-Transfer-Encoding come illustrato di seguito:

--changeset_BBB456
Content-Type: application/http
Content-Transfer-Encoding:binary

I set di modifiche possono anche includere un'intestazione Content-ID con un valore univoco. Questo valore, se preceduto da $, rappresenta una variabile che contiene l'Uri per qualsiasi entità creata per tale operazione. Ad esempio, quando imposti il valore 1, puoi fare riferimento a quell'entità usando $1 nel set di modifiche.

La fine del set di modifiche deve contenere un indicatore di chiusura come illustrato di seguito:

--changeset_BBB456--

Esempio

Il seguente esempio include un batch con un identificatore univoco di AAA123 e un set di modifiche con un identificatore univoco di BBB456.

Nel set di modifiche, vengono create due attività usando POST e vengono associate a un account esistente con accountid = 00000000-0000-0000-000000000001.

Infine, viene inclusa una richiesta GET all'esterno del set di modifiche per restituire tutte e sei le attività associate all'account, incluse le due create nella richiesta batch.

  • Richiesta

    POST cc_WebAPI_ServiceURI/$batch HTTP/1.1
    Content-Type: multipart/mixed;boundary=batch_AAA123
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    --batch_AAA123
    Content-Type: multipart/mixed;boundary=changeset_BBB456
    
    --changeset_BBB456
    Content-Type: application/http
    Content-Transfer-Encoding:binary
    Content-ID: 1
    
    POST cc_WebAPI_ServiceURI/tasks HTTP/1.1
    Content-Type: application/json;type=entry
    
    {"subject":"Task 1 in batch","regardingobjectid_account_task@odata.bind":"cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)"}
    --changeset_BBB456
    Content-Type: application/http
    Content-Transfer-Encoding:binary
    Content-ID: 2
    
    POST cc_WebAPI_ServiceURI/tasks HTTP/1.1
    Content-Type: application/json;type=entry
    
    {"subject":"Task 2 in batch","regardingobjectid_account_task@odata.bind":"cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)"}
    --changeset_BBB456--
    
    --batch_AAA123
    Content-Type: application/http
    Content-Transfer-Encoding:binary
    
    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)/Account_Tasks?$select=subject HTTP/1.1
    Accept: application/json
    
    --batch_AAA123--
    
  • Risposta

    --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f
    Content-Type: multipart/mixed; boundary=changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc
    
    --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    Content-ID: 1
    
    HTTP/1.1 204 No Content
    OData-Version: 4.0
    Location: cc_WebAPI_ServiceURI/tasks(a59c24f3-fafc-e411-80dd-00155d2a68cb)
    OData-EntityId: cc_WebAPI_ServiceURI/tasks(a59c24f3-fafc-e411-80dd-00155d2a68cb)
    
    
    --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    Content-ID: 2
    
    HTTP/1.1 204 No Content
    OData-Version: 4.0
    Location: cc_WebAPI_ServiceURI/tasks(a69c24f3-fafc-e411-80dd-00155d2a68cb)
    OData-EntityId: cc_WebAPI_ServiceURI/tasks(a69c24f3-fafc-e411-80dd-00155d2a68cb)
    
    
    --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc--
    --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    
    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
      "@odata.context":"cc_WebAPI_ServiceURI/$metadata#tasks(subject)","value":[
        {
          "@odata.etag":"W/\"474122\"","subject":"Task Created with Test Account","activityid":"919c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474125\"","subject":"Task 1","activityid":"a29c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474128\"","subject":"Task 2","activityid":"a39c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474131\"","subject":"Task 3","activityid":"a49c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474134\"","subject":"Task 1 in batch","activityid":"a59c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474137\"","subject":"Task 2 in batch","activityid":"a69c24f3-fafc-e411-80dd-00155d2a68cb"
        }
      ]
    }
    --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f--
    

Vedere anche

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
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
Utilizzare le funzioni API Web
Utilizzare le azioni 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