Piezīmes
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt pierakstīties vai mainīt direktorijus.
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt mainīt direktorijus.
Operācijas, kas modificē datus, ir Web API pamatdaļa. Papildus vienkāršām atjaunināšanas un dzēšanas operācijām var veikt darbības ar atsevišķām tabulas kolonnām (entītijas atribūtiem) un izveidot atjaunināšanas pieprasījumus, kas atjaunina vai ievieto datus atkarībā no tā, vai tie pastāv.
Pamata atjauninājums
Atjaunināšanas operācijās tiek izmantots HTTP PATCH darbības vārds. Nododiet JSON objektu, kas satur rekvizītus, kurus vēlaties atjaunināt, uz URI, kas attēlo ierakstu. Ja atjaunināšana ir veiksmīga, atbilde atgriež statusu 204 No Content.
Galvene If-Match: * nodrošina, ka netiek izveidots jauns ieraksts, nejauši veicot upsert operāciju. Papildinformāciju skatiet sadaļā Novērst izveidi upsert.
Svarīgi
Atjauninot entītiju, pieprasījuma pamattekstā iekļaujiet tikai tos rekvizītus, kurus maināt. Ja atjaunināt entītiju, iekļaujot visus iepriekš izgūtās entītijas rekvizītus, operācija atjaunina katru rekvizītu pat tad, ja vērtība ir vienāda. Šis atjauninājums var izraisīt sistēmas notikumus, kas aktivizē biznesa loģiku, kas paredz, ka vērtības ir mainījušās. Tas var izraisīt rekvizītu atjaunināšanu auditēšanas datos, ja tie faktiski nav mainījušies.
Atjauninot rekvizītu statecode , vienmēr iestatiet vēlamo statuscode. Un statecode vērtības ir statuscode atkarīgas viena no otras. Noteiktai statecode vērtībai var būt vairākas derīgas statuscode vērtības. Tomēr katrai statecode kolonnai ir konfigurēta viena DefaultStatus vērtība. Atjauninot statecode , nenorādot , sistēma iestata noklusējuma statusa statuscodevērtību. Turklāt, ja iespējojat auditēšanu tabulā un kolonnā, statuscode mainītā kolonnas statuscode vērtība netiek tverta audita datos, ja vien to nenorādāt atjaunināšanas operācijā.
Piezīmes
Atribūtu definīcija ietver rekvizītu RequiredLevel . Ja šis rekvizīts ir iestatīts uz SystemRequired, šos atribūtus nevar iestatīt uz vērtību Null. Papildinformāciju skatiet sadaļā Atribūta prasību līmenis.
Šajā piemērā tiek atjaunināts esošs konta ieraksts ar accountid vērtību 000000000-0000-0000-00000000001.
Lūgums:
PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-Match: *
{
"name": "Updated Sample Account ",
"creditonhold": true,
"address1_latitude": 47.639583,
"description": "This is the updated description of the sample account",
"revenue": 6000000,
"accountcategorycode": 2
}
Atbildi:
HTTP/1.1 204 No Content
OData-Version: 4.0
Piezīmes
Informāciju par entītiju saistīšanu un atsaistīšanu atjaunināšanas laikā skatiet sadaļā Vienas vērtības navigācijas rekvizītu izmantošana.
Atjaunināšana ar atgrieztiem datiem
Lai izgūtu datus no atjaunināmās entītijas, izveidojiet pieprasījumu PATCH tā, lai tas atgrieztu datus no atjauninātā ieraksta ar statusu 200 (Labi). Lai iegūtu šo rezultātu, izmantojiet Prefer: return=representation pieprasījuma galveni.
Lai kontrolētu, kuri rekvizīti tiek atgriezti, pievienojiet vaicājuma $select opciju entītiju kopas URL. Vaicājuma $expand opcija tiek ignorēta, ja tā tiek izmantota.
Šajā piemērā tiek atjaunināta konta entītija un atbildē tiek atgriezti pieprasītie dati.
Lūgums:
PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)?$select=name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Content-Type: application/json; charset=utf-8
Prefer: return=representation
If-Match: *
{"name":"Updated Sample Account"}
Atbildi:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: return=representation
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
"@odata.etag": "W/\"536537\"",
"accountid": "00000000-0000-0000-0000-000000000001",
"accountcategorycode": 1,
"description": "This is the description of the sample account",
"address1_latitude": 47.63958,
"creditonhold": false,
"name": "Updated Sample Account",
"createdon": "2016-09-28T23:14:00Z",
"revenue": 5000000.0000,
"_transactioncurrencyid_value": "048dddaa-6f7f-e611-80d3-00155db5e0b6"
}
Vairāku ierakstu atjaunināšana vienā pieprasījumā
Ātrākais veids, kā atjaunināt vairākus viena tipa ierakstus vienā pieprasījumā, ir izmantot darbību UpdateMultiple. Ne visas standarta tabulas atbalsta šo darbību, bet visas elastīgās tabulas to atbalsta.
Papildu informācija:
- Lielapjoma operāciju ziņojumi
- Piemērs: tīmekļa API Lielapjoma operāciju izmantošana
- Izmantojiet UpdateMultiple ar elastīgām tabulām
Vienas rekvizīta vērtības atjaunināšana
Lai atjauninātu vienu rekvizīta vērtību, izmantojiet PUT pieprasījumu un pievienojiet rekvizīta nosaukumu entītijas URI.
Šajā piemērā tiek atjaunināts esošas rindas name rekvizīts accountid ar vērtību 00000000-0000-0000-0000-000000000001.account
Lūgums:
PUT [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/name HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
{"value": "Updated Sample Account Name"}
Atbildi:
HTTP/1.1 204 No Content
OData-Version: 4.0
Vienas rekvizīta vērtības dzēšana
Lai izdzēstu viena rekvizīta vērtību, izmantojiet DELETE pieprasījumu ar rekvizīta nosaukumu, kas pievienots entītijas URI.
Tālāk sniegtajā piemērā tiek izdzēsta konta entītijas rekvizīta vērtība description ar accountid vērtību 00000000-0000-0000-0000-000000000001.
Lūgums:
DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/description HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Atbildi:
HTTP/1.1 204 No Content
OData-Version: 4.0
Piezīmes
Šo pieeju nevar izmantot ar vienas vērtības navigācijas rekvizītu, lai atsaistītu divas entītijas. Alternatīvu pieeju skatiet sadaļā Saistīšana, izmantojot vienas vērtības navigācijas rekvizītu.
Tabulas rindas augšupcelšana
Upsert operācija ir līdzīga atjauninājumam. Tas izmanto PATCH pieprasījumu un izmanto URI, lai atsauktos uz konkrētu ierakstu. Atšķirība ir tāda, ka, ja ieraksts nepastāv, tas tiek izveidots. Ja tas jau pastāv, tas tiek atjaunināts.
Upsert ir vērtīgs, sinhronizējot datus starp ārējām sistēmām. Ārējā sistēma, iespējams, nesasatur atsauci uz Dataverse tabulas primāro atslēgu, tāpēc varat konfigurēt alternatīvās atslēgas Dataverse tabulai, izmantojot vērtības no ārējās sistēmas, kas unikāli identificē ierakstu abās sistēmās. Papildinformācija Alternatīvo atslēgu definēšana atsauces rindām
Visas tabulai definētās alternatīvās atslēgas var redzēt entītijas tipa anotācijās $metadata pakalpojuma dokumentā. Papildinformācija: Alternatīvās atslēgas.
Šajā piemērā ir tabula ar nosaukumu sample_thing , kurai ir alternatīvā atslēga, kas attiecas uz divām kolonnām: sample_key1 un , kuras abas sample_key2ir definētas, lai saglabātu veselas vērtības.
Lūgums:
PATCH [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1) HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Content-Type: application/json
{
"sample_name": "1:1"
}
Gan izveides, gan atjaunināšanas operācijām tiek saņemta viena un tā pati atbilde. Ievērojiet, OData-EntityId kā atbildes galvene izmanto atslēgas vērtības, nevis ieraksta GUID primārās atslēgas identifikatoru.
Atbildi:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1)
Tā kā atbilde ir vienāda, jūs nevarat zināt, vai operācija ir vai CreateUpdate operācija.
Ja jums ir jāzina, varat izmantot Prefer: return=representation pieprasījuma galveni. Izmantojot šo galveni, jūs saņemat 201 Created atbildi, kad ieraksts tiek izveidots, un atbildi 200 OK , kad ieraksts tiek atjaunināts. Šī opcija pievieno Retrieve operāciju, kas ietekmē veiktspēju. Ja izmantojat Prefer: return=representation pieprasījuma galveni, pārliecinieties, vai ir $select iekļauts minimālais datu apjoms, vēlams tikai primārās atslēgas kolonna. Papildinformācija: Atjaunināšana ar atgrieztajiem datiem un Izveide ar atgrieztajiem datiem.
Ja izmantojat alternatīvās atslēgas, neiekļaujiet alternatīvās atslēgas vērtības pieprasījuma pamattekstā.
- Ja upsert apzīmē
Update, šīs alternatīvās atslēgas vērtības tiek ignorētas. Alternatīvās atslēgas vērtības nevar atjaunināt, kamēr tās tiek izmantotas ieraksta identificēšanai. - Ja upsert apzīmē
Create, URL atslēgas vērtības tiek iestatītas ierakstam, ja tās nav pamattekstā. Tāpēc nav nepieciešams tos iekļaut pieprasījuma pamattekstā.
Papildinformācija Upsert izmantošana ieraksta izveidei vai atjaunināšanai
Piezīmes
Parasti, veidojot jaunu ierakstu, ļaujiet sistēmai piešķirt GUID vērtību primārajai atslēgai. Šī prakse ir vislabākā, jo sistēma ģenerē indeksam optimizētas atslēgas, un šī izvēle uzlabo veiktspēju. Taču, ja nepieciešams izveidot ierakstu ar noteiktu primārās atslēgas vērtību, piemēram, ja atslēgas GUID vērtību ģenerē ārēja sistēma, operācija upsert nodrošina veidu, kā to izdarīt.
Nepieļaut izveidi vai atjaunināšanu, izmantojot upsert
Dažreiz vēlaties veikt upsert , bet novērst kādu no iespējamām darbībām: izveidot vai atjaunināt. Šīs darbības var novērst, If-Match izmantojot galvenes vai If-None-Match . Papildinformāciju skatiet sadaļā Upsert operāciju ierobežošana.
Pamata dzēšana
Dzēšanas operācija ir vienkārša. Izmantojiet DELETE darbības vārdu ar dzēšamās entītijas URI. Šajā ziņojuma piemērā tiek izdzēsta konta entītija, kuras primārās atslēgas accountid vērtība ir vienāda ar 00000000-0000-0000-0000-000000000001.
Lūgums:
DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Atbildi:
Ja entītija pastāv, jūs saņemat parastu atbildi ar statusu 204, lai norādītu, ka dzēšana bija veiksmīga. Ja entītija netiek atrasta, tiek saņemta atbilde ar statusu 404.
HTTP/1.1 204 No Content
OData-Version: 4.0
Pārbaudiet, vai nav ierakstu dublikātu
Papildinformāciju par to, kā pārbaudīt ierakstu dublikātus atjaunināšanas operācijas laikā, skatiet sadaļā Dublikātu noteikšana atjaunināšanas operācijas laikā, izmantojot Web API.
Vairāku ierakstu dzēšana vienā pieprasījumā
Lai vienā pieprasījumā izdzēstu vairākus viena tipa ierakstus, izmantojiet šo DeleteMultiple darbību. Standarta tabulas DeleteMultiple to neatbalsta, bet visas elastīgās tabulas to dara.
Piezīmes
Standarta tabulām izmantojiet darbību BulkDelete. Šī darbība iespējo vaicājumam atbilstošu ierakstu asinhronu dzēšanu. Papildinformāciju skatiet sadaļā Datu lielapjoma dzēšana.
Papildu informācija:
- Lielapjoma operāciju ziņojumi
- Elastīgā galda parauga kods
- DeleteMultiple izmantošana ar elastīgām tabulām
Dokumentu atjaunināšana un dzēšana krātuves nodalījumos
Ja atjaunināt vai dzēst elastīgās tabulas datus, kas tiek glabāti nodalījumos, norādiet nodalījuma atslēgu, kad piekļūstat šiem datiem.
Papildinformācija PartitionId vērtības izvēle
Skatīt arī
Tīmekļa API pamatoperāciju paraugs (C#)
Tīmekļa API pamatoperāciju paraugs (klienta puses JavaScript)
Darbību veikšana, izmantojot tīmekļa API
Http pieprasījumu sastādīšana un kļūdu apstrāde
Datu vaicājums, izmantojot tīmekļa API
Tabulas rindas izveide, izmantojot tīmekļa API
Tabulas rindas izgūšana, izmantojot tīmekļa API
Tabulas rindu saistīšana un atsaistīšana, izmantojot Web API
Tīmekļa API funkciju izmantošana
Tīmekļa API darbību izmantošana
Pakešu operāciju izpilde, izmantojot tīmekļa API
Uzdošanās par citu lietotāju, izmantojot tīmekļa API
Nosacītu operāciju veikšana, izmantojot tīmekļa API