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 za modifikaciju podataka su ključni deo Veb API-ja. Pored jednostavnih operacija ažuriranja i brisanja, možete izvoditi operacije na pojedinačnim kolonama tabele (atributi entiteta) i sastaviti upsert zahteve koji će ažurirati ili ubaciti 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. Odgovor sa statusom se 204 No Content vraća ako je ažuriranje uspešno.
Zaglavlje If-Match: * osigurava da ne kreirate novi zapis slučajnim izvođenjem operacije upsert. Više informacija: Sprečite stvaranje u upsert-u.
Važno
Kada ažurirate entitet, uključite samo svojstva koja menjate u telu zahteva. Jednostavno ažuriranje svojstava entiteta koji ste prethodno preuzeli, i uključivanje tog JSON-a u vaš zahtev, ažuriraće svaku osobinu iako je vrednost ista. Ovo može izazvati sistemske događaje koji mogu pokrenuti poslovnu logiku koja očekuje da su se vrednosti promenile. Ovo može dovesti do toga da se čini da su svojstva ažurirana u podacima o reviziji kada se u stvari nisu promenila.
Kada ažurirate imovinu statecode , važno je da uvek podesite željeni statuscode.
statecode i statuscode imaju zavisne vrednosti. Može postojati više validnih statuscode vrednosti za datu statecode vrednost, ali svaka statecode kolona ima jednu DefaultStatus vrednost konfigurisanu. Kada ažurirate statecode bez navođenja , statuscodepodrazumevana vrednost statusa će biti postavljena od strane sistema. Takođe, kada je revizija omogućena u tabeli i koloni, statuscode promenjena vrednost za kolonu statuscode neće biti zarobljena u podacima revizije, osim ako je navedena u operaciji ažuriranja.
Belešku
Definicija atributa uključuje osobinu RequiredLevel . Kada je ovo podešeno na SystemRequired, ne možete podesiti ove atribute na nultu vrednost. Više informacija: Nivo zahteva za atribute
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
Pogledajte Korišćenje jednovrednih svojstava navigacije za informacije o povezivanju i razdvajanju entiteta prilikom ažuriranja.
Ažurirajte sa vratitim podacima
Da biste preuzeli podatke iz entiteta koji ažurirate, možete sastaviti svoj PATCH zahtev tako da se podaci iz kreiranog zapisa vrate sa statusom 200 (OK). Da biste dobili ovaj rezultat, morate koristiti zaglavlje Prefer: return=representation zahteva.
Da biste kontrolisali koja svojstva se vraćaju, dodajte opciju upita $select URL-u skupa 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. U vreme pisanja ovog teksta, akcija UpdateMultiple. 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
Kada želite da ažurirate samo jednu vrednost osobine, koristite PUT zahtev sa imenom osobine koja se dodaje na Uri entiteta.
Sledeći primer ažurira osobinu name postojećeg account reda sa vrednošću accountid 00000000-0000-0000-0000-00000000001.
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 dodanim na Uri entiteta.
Sledeći primer briše vrednost description imovine entiteta računa sa accountid vrednošću 00000000-0000-0000-0000-00000000001.
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
Ovo se ne može koristiti sa jednovrednom navigacijskom osobinom za razdvajanje dva entiteta. Za alternativni pristup, pogledajte Prekid veze sa jednovrednom navigacijom 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 ne može da sadrži 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. Sa ovim zaglavljem, dobijate 201 Created odgovor kada se kreira zapis 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, ne bi trebalo da uključite alternativne vrednosti ključa 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 dozvolićete sistemu da dodeli GUID vrednost za primarni ključ. Ovo je najbolja praksa jer sistem generiše ključeve koji su optimizovani za indeks i to 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 postoje situacije u kojima želite da izvršite upsert, ali želite da sprečite jednu od potencijalnih operacija: ili kreirajte ili ažurirajte. To možete uraditi pomoću 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 accountid primarnom ključnom vrednošću jednakom 00000000-0000-0000-0000-0000000000001.
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
Najbrži način da izbrišete više zapisa istog tipa u jednom zahtevu je da koristite akciju DeleteMultiple . U vreme pisanja ovog teksta, DeleteMultiple akcija je funkcija pregleda. Standardne tabele ne podržavaju ovu akciju, ali sve elastične tabele podržavaju.
Belešku
Za standardne tabele, preporučujemo korišćenje akcije BulkDelete, koja omogućava asinhrono brisanje zapisa koji odgovaraju upitu. Više informacija: Brisanje podataka u velikoj meri
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, budite sigurni da specificirate 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