Udføre batchhandlinger ved hjælp af Web-API
Udgivet: januar 2017
Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Du kan gruppere flere handlinger i en enkelt HTTP-anmodning ved hjælp af en batchhandling.
Dette emne indeholder
Hvornår kan jeg bruge batchanmodninger?
Batchanmodninger
Ændre sæt
Eksempel
Hvornår kan jeg bruge batchanmodninger?
Den værdi, som batchanmodninger giver, er, at de kan omfatte ændringssæt, som giver en måde at samle en række operationer, der enten lykkes eller mislykkes som en gruppe, på. Sammenlignet med andre operationer, der kan udføres ved hjælp af web-API'et, er de sværere at sammensætte i en transaktion uden nogle objektmodel, der omfatter serialisering af objekter eller en dybere forståelse af HTTP-protokollen, fordi anmodningsteksten hovedsagelig er et tekstdokument, der skal stemme overens med meget specifikke krav.
Husk, at tilknyttede objekter lettere kan oprettes med en enkelt handling end ved hjælp af en batchanmodning. Batchanmodninger bruges bedst, når du udfører handlinger på objekter, der ikke er knyttet til hinanden, når alle handlingerne skal udføres i en enkelt transaktionshandling.
Desuden er de svar, der returneres, grundlæggende tekstdokumenter frem for objekter, der let kan opdeles i JSON. Du skal opdele teksten i svaret eller finde et Hjælp-bibliotek for at få adgang til dataene i svaret.
Batchanmodninger
Brug en POST-anmodning for at sende en batchhandling, der indeholder flere anmodninger. En batchanmodning kan omfatte GET-anmodninger og ændringssæt. Hvis du vil bruge de transaktionsfunktioner i batch-anmodninger, kan kun de handlinger, der ændrer data, medtages i et ændringssæt.GET-anmodninger skal ikke medtages i ændringssættet.
Den POST-anmodning, der indeholder batchen, skal have en Content-Type-header med en værdi, der er indstillet til multipart/mixed, og med en grænse, der er indstillet til at medtage id'et for det batch, der bruger dette mønster:
--batch_<unique identifier>
Det entydige id behøver ikke at være et GUID, men skal være entydigt. Hvert element i batchen skal indledes med batch-id'et, som skal have en Content-Type- og Content-Transfer-Encoding-header som denne:
--batch_WKQS9Yui9r
Content-Type: application/http
Content-Transfer-Encoding:binary
Batchen skal til sidst indeholde et afslutnings-id som dette:
--batch_WKQS9Yui9r--
Bemærk
Indstillingen odata.continue-on-error understøttes ikke af web-API'en. Eventuelle fejl, der opstår i batchen, stopper behandlingen af resten af batchen.
Ændre sæt
Når flere operationer er indeholdt i et ændringssæt, betragtes alle handlinger som atomiske, hvilket betyder, at hvis en af handlingerne mislykkes, annulleres fuldførte handlinger. Som ved en batchanmodning, skal ændringssæt have en Content-Type-header, hvor værdien er indstillet til multipart/mixed, og med en grænse, der er indstillet til at medtage id'et for det ændringssæt, der bruger dette mønster:
--changeset_<unique identifier>
Det entydige id behøver ikke at være et GUID, men skal være entydigt. Hvert element i ændringssættet skal indledes med ændringssættets id, som skal have en Content-Type- og Content-Transfer-Encoding-header som denne:
--changeset_BBB456
Content-Type: application/http
Content-Transfer-Encoding:binary
Ændringssæt kan også omfatte en Content-ID-header med en entydig værdi. Når denne værdi har præfikset $, repræsenterer den en variabel, der indeholder URI'en for ethvert objekt, der er oprettet i den pågældende handling. For eksempel, når du angiver værdien 1, kan du referere til dette objekt ved hjælp af $1 senere i ændringssættet.
Ændringssættet skal til sidst indeholde et afslutnings-id som dette:
--changeset_BBB456--
Eksempel
Følgende eksempel indeholder et batch med det entydige id AAA123 og et ændringssæt med det entydige id BBB456.
I ændringssættet oprettes to opgaver ved hjælp af POST og er knyttet til en eksisterende konto med accountid = 00000000-0000-0000-000000000001.
Endelig er der medtaget en GET-anmodning uden for ændringssættet, som kan returnere alle seks opgaver, der er knyttet til kontoen, herunder de to, der blev oprettet i batchanmodningen.
Anmodning
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--
Svar
--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--
Se også
Udføre operationer ved hjælp af web-API
Skrive HTTP-anmodninger og håndtere fejl
Forespørg på data ved hjælp af Web-API'en
Oprette et objekt ved hjælp af Web-API
Hente et objekt ved hjælp af web-API'et
Opdatere og slette objekter ved hjælp af web-API'et
Tilknytte og fjerne tilknytningen af objekter ved hjælp af web-API'et
Bruge Web-API-funktioner
Brug Web API-handlinger
Efterligne en anden bruger ved hjælp af Web-API'en
Udfør betingede operationer ved hjælp af web-API
Microsoft Dynamics 365
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret