Piezīme
Lai piekļūtu šai lapai, nepieciešama autorizācija. Varat mēģināt pierakstīties vai mainīt direktorijus.
Lai piekļūtu šai lapai, nepieciešama autorizācija. Varat mēģināt mainīt direktorijus.
Datu modificēšanas operācijas 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 upsert pieprasījumus, kas atjauninās vai ievietos 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ājums ir veiksmīgs, tiek atgriezta atbilde ar statusu.204 No Content
Galvene If-Match: * nodrošina, ka netiek izveidots jauns ieraksts, nejauši veicot upsert operāciju. Papildinformācija: Novērst izveidi upsert.
Svarīgi
Atjauninot entītiju, pieprasījuma pamattekstā iekļaujiet tikai tos rekvizītus, kurus maināt. Vienkārši atjauninot iepriekš izgūtās entītijas rekvizītus un iekļaujot šo JSON pieprasījumā, katrs rekvizīts tiks atjaunināts, pat ja vērtība ir vienāda. Tas var izraisīt sistēmas notikumus, kas var aktivizēt biznesa loģiku, kas paredz, ka vērtības ir mainījušās. Tas var izraisīt rekvizītu atjaunināšanu auditēšanas datos, lai gan faktiski tie nav mainījušies.
Atjauninot statecode īpašumu, ir svarīgi vienmēr iestatīt vēlamo statuscode.
statecode un tām ir statuscode atkarīgas vērtības. Konkrētai statecode vērtībai var būt vairākas derīgas statuscode vērtības, bet katrai statecode kolonnai ir konfigurēta viena vērtība DefaultStatus. Atjauninot statecode , nenorādot , noklusējuma statusa statuscodevērtību iestatīs sistēma. Turklāt, ja tabulā un kolonnā ir iespējota statuscode auditēšana, mainītā kolonnas statuscode vērtība netiks tverta audita datos, ja vien tā nav norādīta atjaunināšanas operācijā.
Piezīmes
Atribūtu definīcija ietver rekvizītu RequiredLevel . Ja tas ir iestatīts uz SystemRequired, šiem atribūtiem nevar iestatīt vērtību Null. Papildinformācija: Atribūta prasības 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, varat izveidot PATCH pieprasījumu tā, lai izveidotā ieraksta dati tiktu atgriezti ar statusu 200 (Labi). Lai iegūtu šo rezultātu, jāizmanto Prefer: return=representation pieprasījuma galvene.
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. Šī rakstīšanas laikā darbība 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
Ja vēlaties atjaunināt tikai vienu rekvizīta vērtību, izmantojiet PUT pieprasījumu ar rekvizīta nosaukumu, kas pievienots entītijas URI.
Tālāk sniegtajā piemērā tiek atjaunināts esošas account rindas name rekvizīts ar accountid vērtību 000000000-0000-0000-000000000001.
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 DELETE vērtību, izmantojiet pieprasījumu ar rekvizīta nosaukumu, kas pievienots entītijas URI.
Tālāk sniegtajā piemērā tiek dzēsta konta entītijas rekvizīta description vērtība ar accountid vērtību 00000000-0000-0000-00000000000000001.
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
To nevar izmantot ar vienas vērtības navigācijas rekvizītu, lai atsaistītu divas entītijas. Alternatīvu pieeju skatiet sadaļā Saistīšana ar 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 var nesaturēt 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"
}
Abām izveides vai 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.
Izmantojot alternatīvās atslēgas, alternatīvās atslēgas vērtības nedrīkst iekļaut 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, jūs ļaujat sistēmai piešķirt GUID vērtību primārajai atslēgai. Tā ir labākā prakse, jo sistēma ģenerē indeksam optimizētas atslēgas, un tas 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 ir situācijas, kad vēlaties veikt upsert, bet vēlaties novērst kādu no iespējamām darbībām: izveidot vai atjaunināt. To var izdarīt, 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-0000000000001.
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ā
Ātrākais veids, kā vienā pieprasījumā izdzēst vairākus viena tipa ierakstus, ir izmantot DeleteMultiple šo darbību. Šī rakstīšanas DeleteMultiple laikā darbība ir priekšskatījuma funkcija. Standarta tabulas neatbalsta šo darbību, bet visas elastīgās tabulas to atbalsta.
Piezīmes
Standarta tabulām ieteicams izmantot darbību BulkDelete, kas iespējo vaicājumam atbilstošu ierakstu asinhronu dzēšanu. Papildinformācija 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, noteikti norādiet nodalījuma atslēgu, piekļūstot š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