Belešku
Pristup ovoj stranici zahteva autorizaciju. Možete pokušati da se prijavite ili da promenite direktorijume.
Pristup ovoj stranici zahteva autorizaciju. Možete pokušati da promenite direktorijume.
Operacije koje modifikuju podatke su osnovni deo Veb API-ja. Pored jednostavnih operacija ažuriranja i brisanja, možete izvoditi operacije na kolonama pojedinačnih tabela (atributi entiteta) i sastavljati upsert zahteve koji ažuriraju ili ubacuju podatke u zavisnosti od toga da li postoje.
Osnovno ažuriranje
Operacije ažuriranja koriste HTTP PATCH glagol. Prosledite JSON objekat koji sadrži osobine koje želite da ažurirate na URI koji predstavlja zapis. Ako je ažuriranje uspešno, odgovor vraća status 204 No Content.
Zaglavlje If-Match: * osigurava da ne kreirate novi zapis slučajnim izvođenjem operacije upsert. Za više informacija, pogledajte Sprečite stvaranje u upsert-u.
Važno
Kada ažurirate entitet, uključite samo svojstva koja menjate u telu zahteva. Ako ažurirate entitet uključivanjem svih svojstava entiteta koji ste prethodno preuzeli, operacija ažurira svaku osobinu čak i ako je vrednost ista. Ovo ažuriranje može izazvati sistemske događaje koji pokreću poslovnu logiku koja očekuje da su se vrednosti promenile. To može dovesti do toga da se svojstva ažuriraju u podacima o reviziji kada se zapravo ne menjaju.
Kada ažurirate osobinu statecode , uvek podesite željenu statuscode. I statecodestatuscode vrednosti zavise jedna od druge. Za datu statecode vrednost, može postojati više važećih statuscode vrednosti. Međutim, svaka statecode kolona ima jednu DefaultStatus vrednost konfigurisanu. Kada ažurirate statecode bez navođenja , statuscodesistem postavlja podrazumevanu vrednost statusa. Takođe, ako omogućite reviziju u tabeli i koloni, statuscode promenjena vrednost za kolonu statuscode nije zarobljena u podacima revizije, osim ako je ne navedete u operaciji ažuriranja.
Belešku
Definicija atributa uključuje osobinu RequiredLevel . Kada je ova osobina podešena na SystemRequired, ne možete podesiti ove atribute na nultu vrednost. Za više informacija, pogledajte Nivo zahteva atributa.
Ovaj primer ažurira postojeći zapis računa sa accountid vrednošću 00000000-0000-0000-0000-000000000001.
Zahtev:
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
}
Odgovor:
HTTP/1.1 204 No Content
OData-Version: 4.0
Belešku
Za informacije o povezivanju i razdvajanju entiteta prilikom ažuriranja, pogledajte Korišćenje jednovrednih svojstava navigacije.
Ažurirajte sa vratitim podacima
Da biste preuzeli podatke iz entiteta koji ažurirate, sastavite zahtev PATCH tako da vraća podatke iz ažuriranog zapisa sa statusom KSNUMKS (OK). Da biste dobili ovaj rezultat, koristite zaglavlje Prefer: return=representation zahteva.
Da biste kontrolisali koja svojstva se vraćaju, dodajte opciju upita $select URL-u za skup entiteta. Opcija $expand upita se ignoriše ako se koristi.
Ovaj primer ažurira entitet naloga i vraća tražene podatke u odgovoru.
Zahtev:
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"}
Odgovor:
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"
}
Ažurirajte više zapisa u jednom zahtevu
Najbrži način za ažuriranje više zapisa istog tipa u jednom zahtevu je da koristite akciju UpdateMultie. Ne podržavaju sve standardne tabele ovu akciju, ali sve elastične tabele podržavaju.
Još informacija:
- Bulk Operation poruke
- Uzorak: Veb API - Koristite masovne operacije
- Koristite UpdateMultiple sa elastičnim tabelama
Ažurirajte jednu vrednost osobine
Da biste ažurirali vrednost jedne osobine, koristite PUT zahtev i dodajte ime osobine u Uri entiteta.
Sledeći primer ažurira osobinu name postojećeg account reda sa accountid vrednošću 00000000-0000-0000-0000-000000000001.
Zahtev:
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"}
Odgovor:
HTTP/1.1 204 No Content
OData-Version: 4.0
Obrišite jednu vrednost osobine
Da biste izbrisali vrednost jedne osobine, koristite DELETE zahtev sa imenom osobine koja se dodaje URI-ju entiteta.
Sledeći primer briše vrednost description imovine entiteta računa sa accountid vrednošću 00000000-0000-0000-0000-000000000001.
Zahtev:
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
Odgovor:
HTTP/1.1 204 No Content
OData-Version: 4.0
Belešku
Ne možete koristiti ovaj pristup sa jednovrednom navigacijskom osobinom da biste odvojili dva entiteta. Za alternativni pristup, pogledajte Razdvajanje pomoću jednovredne navigacione osobine.
Upsert red tabele
Operacija upsert je slična ažuriranju. Koristi PATCH zahtev i koristi URI za pozivanje na određeni zapis. Razlika je u tome što ako zapis ne postoji, on je stvoren. Ako već postoji, ažurira se.
Upsert je dragocen prilikom sinhronizacije podataka između spoljnih sistema. Spoljni sistem možda neće sadržavati referencu na primarni ključ Dataverse tabele, tako da možete konfigurisati alternativne ključeve za Dataverse tabelu koristeći vrednosti iz spoljnog sistema koji jedinstveno identifikuju zapis na oba sistema. Više informacija: Definišite alternativne ključeve za referentne redove
Možete videti sve alternativne ključeve koji su definisani za tabelu u napomenama za tip entiteta u dokumentu $metadata servisa. Više informacija: Alternativni tasteri.
U sledećem primeru, postoji tabela sa imenom sample_thing koja ima alternativni ključ koji se odnosi na dve kolone: sample_key1 i sample_key2, koji su oba definisana za čuvanje celih vrednosti.
Zahtev:
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"
}
Za obe operacije kreiranja ili ažuriranja, dobijate isti odgovor. Obratite pažnju na to kako zaglavlje odgovora OData-EntityId koristi ključne vrednosti, a ne identifikator primarnog ključa GUID-a za zapis.
Odgovor:
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)
Pošto je odgovor isti, ne možete znati da li je operacija predstavljala operaciju Create ili Update .
Ako želite da znate, možete koristiti zaglavlje Prefer: return=representation zahteva. Korišćenjem ovog zaglavlja 201 Created , dobijate odgovor kada je zapis kreiran i 200 OK odgovor kada se zapis ažurira. Ova opcija dodaje operaciju Retrieve , koja utiče na performanse. Ako koristite zaglavlje Prefer: return=representation zahteva, uverite se da vaš $select uključuje minimalnu količinu podataka, poželjno samo kolonu primarnog ključa. Više informacija: Ažuriraj sa vraćenim podacima i Kreiraj sa vraćenim podacima.
Kada koristite alternativne ključeve, nemojte uključivati alternativne ključne vrednosti u telu zahteva.
- Kada upsert predstavlja
Update, ove alternativne ključne vrednosti se ignorišu. Ne možete ažurirati alternativne ključne vrednosti dok ih koristite za identifikaciju zapisa. - Kada upsert predstavlja
Create, ključne vrednosti u URL-u su postavljene za zapis ako nisu prisutne u telu. Dakle, nema potrebe da ih uključite u telo zahteva.
Više informacija: Koristite Upsert za kreiranje ili ažuriranje zapisa
Belešku
Normalno kada kreirate novi zapis dozvolite sistemu da dodeli GUID vrednost za primarni ključ. Ova praksa je najbolja jer sistem generiše ključeve koji su optimizovani za indeks i ovaj izbor poboljšava performanse. Ali ako je potrebno da kreirate zapis sa određenom primarnom ključnom vrednošću, kao što je kada je ključna GUID vrednost generisana od strane spoljnog sistema, upsert operacija pruža način da se to uradi.
Sprečite kreiranje ili ažuriranje sa upsert
Ponekad, želite da izvršite upsert , ali sprečite jednu od potencijalnih operacija: ili kreirajte ili ažurirajte. Možete sprečiti ove operacije korišćenjem If-MatchIf-None-Match ili zaglavlja. Za više informacija, pogledajte Ograničite upsert operacije.
Osnovno brisanje
Operacija brisanja je jednostavna. Koristite DELETE glagol sa URI-jem entiteta koji želite da izbrišete. Ovaj primer poruke briše entitet naloga sa primarnom ključnom accountid vrednošću jednakom .00000000-0000-0000-0000-000000000001
Zahtev:
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
Odgovor:
Ako entitet postoji, dobijate normalan odgovor sa statusom 204 koji ukazuje na to da je brisanje bilo uspešno. Ako entitet nije pronađen, dobićete odgovor sa statusom 404.
HTTP/1.1 204 No Content
OData-Version: 4.0
Provera duplih zapisa
Za više informacija o tome kako proveriti duple zapise tokom operacije ažuriranja, pogledajte Otkrivanje duplikata tokom operacije ažuriranja pomoću Veb API-ja.
Izbrišite više zapisa u jednom zahtevu
Da biste izbrisali više zapisa istog tipa u jednom zahtevu, koristite akciju DeleteMultiple . Standardne tabele ne podržavaju ovu akciju DeleteMultiple , ali sve elastične tabele podržavaju.
Belešku
Za standardne tabele, koristite akciju BulkDelete. Ova akcija omogućava asinhrono brisanje zapisa koji odgovaraju upitu. Za više informacija, pogledajte Brisanje podataka u rasutom stanju.
Još informacija:
Ažuriranje i brisanje dokumenata u particijama za skladištenje
Ako obnavljate ili brišete podatke elastične tabele smeštene na particijama, navedite ključ particije kada pristupate tim podacima.
Više informacija: Izbor PartitionId vrednosti
Vidi takođe
Uzorak osnovnih operacija Veb API-ja (C #)
Uzorak osnovnih operacija Veb API-ja (JavaScript na strani klijenta)
Obavljanje operacija pomoću Veb API-ja
Sastavite Http zahteve i greške u rukovanju
Upitni podaci pomoću Veb API-ja
Kreiranje reda tabele pomoću Veb API-ja
Preuzmite red tabele koristeći Veb API
Povežite i odvojite redove tabele koristeći Veb API
Koristite Veb API funkcije
Koristite Veb API akcije
Izvršite batch operacije koristeći Veb API
Lažno predstavljanje drugog korisnika koristeći Veb API
Izvršite uslovne operacije koristeći Veb API