Белешка
Приступ овој страници захтева ауторизацију. Можете покушати да се пријавите или промените директоријуме.
Приступ овој страници захтева ауторизацију. Можете покушати да промените директоријуме.
Операције које модификују податке су основни део Веб АПИ-ја. Поред једноставних операција ажурирања и брисања, можете изводити операције на колонама појединачних табела (атрибути ентитета) и састављати упсерт захтеве који ажурирају или убацују податке у зависности од тога да ли постоје.
Основно ажурирање
Операције ажурирања користе ХТТП PATCH глагол. Проследите ЈСОН објекат који садржи особине које желите да ажурирате на УРИ који представља запис. Ако је ажурирање успешно, одговор враћа статус 204 No Content.
Заглавље If-Match: * осигурава да не креирате нови запис случајним извођењем операције упсерт. За више информација, погледајте Спречите стварање у упсерт-у .
Важно
Када ажурирате ентитет, укључите само својства која мењате у телу захтева. Ако ажурирате ентитет укључивањем свих својстава ентитета који сте претходно преузели, операција ажурира сваку особину чак и ако је вредност иста. Ово ажурирање може изазвати системске догађаје који покрећу пословну логику која очекује да су се вредности промениле. То може довести до тога да се својства ажурирају у подацима о ревизији када се заправо не мењају.
Када ажурирате особину statecode , увек подесите жељену statuscode. И statecodestatuscode вредности зависе једна од друге. За дату statecode вредност, може постојати више важећих statuscode вредности. Међутим , свака statecode колона има једну ДефаултСтатус вредност конфигурисану. Када ажурирате statecode без навођења , statuscode систем поставља подразумевану вредност статуса. Такође, ако омогућите ревизију у табели и колони, statuscode промењена вредност за колону statuscode није заробљена у подацима ревизије, осим ако је не наведете у операцији ажурирања.
Белешка
Дефиниција атрибута укључује особину RequiredLevel . Када је ова особина подешена на SystemRequired, не можете подесити ове атрибуте на нулту вредност. За више информација, погледајте Ниво захтева атрибута .
Овај пример ажурира постојећи запис рачуна са accountid вредношћу 00000000-0000-0000-0000-000000000001.
Захтев:
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
}
Одговор:
HTTP/1.1 204 No Content
OData-Version: 4.0
Белешка
За информације о повезивању и раздвајању ентитета приликом ажурирања, погледајте Коришћење једновредних својстава навигације .
Ажурирајте са вратитим подацима
Да бисте преузели податке из ентитета који ажурирате, саставите захтев PATCH тако да враћа податке из ажурираног записа са статусом КСНУМКС (ОК). Да бисте добили овај резултат, користите заглавље Prefer: return=representation захтева.
Да бисте контролисали која својства се враћају, додајте опцију упита $select УРЛ-у за скуп ентитета. Опција $expand упита се игнорише ако се користи.
Овај пример ажурира ентитет налога и враћа тражене податке у одговору.
Захтев:
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"}
Одговор:
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"
}
Ажурирајте више записа у једном захтеву
Најбржи начин за ажурирање више записа истог типа у једном захтеву је да користите акцију УпдатеМултие . Не подржавају све стандардне табеле ову акцију, али све еластичне табеле подржавају.
Још информација:
- Булк Оператион поруке
- Узорак : Веб АПИ - Користите масовне операције
- Користите УпдатеМултипле са еластичним табелама
Ажурирајте једну вредност особине
Да бисте ажурирали вредност једне особине, користите PUT захтев и додајте име особине у Ури ентитета.
Следећи пример ажурира особину name постојећег account реда са accountid вредношћу 00000000-0000-0000-0000-000000000001.
Захтев:
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"}
Одговор:
HTTP/1.1 204 No Content
OData-Version: 4.0
Обришите једну вредност особине
Да бисте избрисали вредност једне особине, користите DELETE захтев са именом особине која се додаје УРИ-ју ентитета.
Следећи пример брише вредност description имовине ентитета рачуна са accountid вредношћу 00000000-0000-0000-0000-000000000001.
Захтев:
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
Одговор:
HTTP/1.1 204 No Content
OData-Version: 4.0
Белешка
Не можете користити овај приступ са једновредном навигацијском особином да бисте одвојили два ентитета. За алтернативни приступ, погледајте Раздвајање помоћу једновредне навигационе особине .
Упсерт ред табеле
Операција упсерт је слична ажурирању. Користи PATCH захтев и користи УРИ за позивање на одређени запис. Разлика је у томе што ако запис не постоји, он је створен. Ако већ постоји, ажурира се.
Упсерт је драгоцен приликом синхронизације података између спољних система. Спољни систем можда неће садржавати референцу на примарни кључ Датаверсе табеле, тако да можете конфигурисати алтернативне кључеве за Датаверсе табелу користећи вредности из спољног система који јединствено идентификују запис на оба система. Више информација: Дефинишите алтернативне кључеве за референтне редове
Можете видети све алтернативне кључеве који су дефинисани за табелу у напоменама за тип ентитета у документу $ метадата сервиса. Више информација: Алтернативни тастери .
У следећем примеру, постоји табела са именом sample_thing која има алтернативни кључ који се односи на две колоне: sample_key1 и sample_key2, који су оба дефинисана за чување целих вредности.
Захтев:
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"
}
За обе операције креирања или ажурирања, добијате исти одговор. Обратите пажњу на то како заглавље одговора OData-EntityId користи кључне вредности, а не идентификатор примарног кључа ГУИД-а за запис.
Одговор:
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)
Пошто је одговор исти, не можете знати да ли је операција представљала операцију Create или Update .
Ако желите да знате, можете користити заглавље Prefer: return=representation захтева. Коришћењем овог заглавља 201 Created , добијате одговор када је запис креиран и 200 OK одговор када се запис ажурира. Ова опција додаје операцију Retrieve , која утиче на перформансе. Ако користите заглавље Prefer: return=representation захтева, уверите се да ваш $select укључује минималну количину података, пожељно само колону примарног кључа. Више информација: Ажурирај са враћеним подацима и Креирај са враћеним подацима.
Када користите алтернативне кључеве, немојте укључивати алтернативне кључне вредности у телу захтева.
- Када упсерт представља
Update, ове алтернативне кључне вредности се игноришу. Не можете ажурирати алтернативне кључне вредности док их користите за идентификацију записа. - Када упсерт представља
Create, кључне вредности у УРЛ-у су постављене за запис ако нису присутне у телу. Дакле , нема потребе да их укључите у тело захтева.
Више информација: Користите Упсерт за креирање или ажурирање записа
Белешка
Нормално када креирате нови запис дозволите систему да додели ГУИД вредност за примарни кључ. Ова пракса је најбоља јер систем генерише кључеве који су оптимизовани за индекс и овај избор побољшава перформансе. Али ако је потребно да креирате запис са одређеном примарном кључном вредношћу, као што је када је кључна ГУИД вредност генерисана од стране спољног система, upsert операција пружа начин да се то уради.
Спречите креирање или ажурирање са упсерт
Понекад , желите да извршите upsert , али спречите једну од потенцијалних операција: или креирајте или ажурирајте. Можете спречити ове операције коришћењем If-MatchIf-None-Match или заглавља. За више информација, погледајте Ограничите упсерт операције .
Основно брисање
Операција брисања је једноставна. Користите DELETE глагол са УРИ-јем ентитета који желите да избришете. Овај пример поруке брише ентитет налога са примарном кључном accountid вредношћу једнаком . 00000000-0000-0000-0000-000000000001
Захтев:
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
Одговор:
Ако ентитет постоји, добијате нормалан одговор са статусом 204 који указује на то да је брисање било успешно. Ако ентитет није пронађен, добићете одговор са статусом 404.
HTTP/1.1 204 No Content
OData-Version: 4.0
Провера дуплих записа
За више информација о томе како проверити дупле записе током операције ажурирања, погледајте Откривање дупликата током операције ажурирања помоћу Веб АПИ-ја .
Избришите више записа у једном захтеву
Да бисте избрисали више записа истог типа у једном захтеву, користите акцију DeleteMultiple . Стандардне табеле не подржавају ову акцију DeleteMultiple , али све еластичне табеле подржавају.
Белешка
За стандардне табеле, користите акцију БулкДелете . Ова акција омогућава асинхроно брисање записа који одговарају упиту. За више информација, погледајте Брисање података у расутом стању .
Још информација:
Ажурирање и брисање докумената у партицијама за складиштење
Ако обнављате или бришете податке еластичне табеле смештене на партицијама, наведите кључ партиције када приступате тим подацима.
Више информација: Избор ПартитионИд вредности
Такође погледајте
Узорак основних операција Веб АПИ-ја (Ц #)
Узорак основних операција Веб АПИ-ја (ЈаваСцрипт на страни клијента)
Обављање операција помоћу Веб АПИ-ја
Саставите Хттп захтеве и грешке у руковању
Упитни подаци помоћу Веб АПИ-ја
Креирајте ред табеле користећи Веб АПИ
Преузмите ред табеле користећи Веб АПИ
Повежите и одвојите редове табеле користећи Веб АПИ
Користите Веб АПИ функције
Користите Веб АПИ акције
Извршите батцх операције користећи Веб АПИ
Лажно представљање другог корисника користећи Веб АПИ
Извршите условне операције користећи Веб АПИ