Бележка
Достъпът до тази страница изисква удостоверяване. Можете да опитате да влезете или да промените директориите.
Достъпът до тази страница изисква удостоверяване. Можете да опитате да промените директориите.
Операциите, които модифицират данни, са основна част от уеб API. Освен простите операции за обновяване и изтриване, можете да извършвате операции върху колони на отделни таблици (атрибути на обекти) и да съставяте upsert заявки, които или актуализират, или вмъкват данни в зависимост от това дали съществуват.
Основна актуализация
Операциите за актуализиране използват HTTP PATCH глагола. Предайте JSON обект, съдържащ свойствата, които искате да актуализирате, на URI, който представлява записа. Ако актуализацията е успешна, отговорът връща статус .204 No Content
Заглавката If-Match: * гарантира, че няма да създадете нов запис чрез случайно извършване на upsert операция. За повече информация вижте Prevent create in upsert.
Важно
Когато актуализирате обект, включете само свойствата, които променяте, в тялото на заявката. Ако актуализирате обект, като включите всички свойства на обект, които сте изтегли предварително, операцията актуализира всяко свойство, дори ако стойността е същата. Тази актуализация може да предизвика системни събития, които задействат бизнес логика, очакваща стойностите да са променени. Това може да накара свойствата да изглеждат обновени в одитните данни, когато всъщност не са се променили.
Когато обновяваш свойството statecode , винаги задавай желаното statuscode. Стойностите statecode и statuscode зависят една от друга. За дадена statecode стойност може да има няколко валидни statuscode стойности. Въпреки това, всяка statecode колона има една конфигурирана стойност DefaultStatus . Когато актуализирате statecode без да уточните statuscode, системата задава стандартната стойност на статуса. Също така, ако активирате одит върху таблицата и колоната statuscode , променената стойност за statuscode колоната не се записва в одитните данни, освен ако не я посочите в операцията за обновяване.
Бележка
Определението за атрибути включва свойство RequiredLevel . Когато това свойство е зададено на SystemRequired, не можете да зададете тези атрибути на нулева стойност. За повече информация вижте Ниво на изискване за атрибут.
Този пример актуализира съществуващ запис на акаунт със accountid стойност 00000000-0000-0000-00000-00000000001.
Молба:
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 си така, че да връща данни от обновения запис със статус 200 (OK). За да получите този резултат, използвайте Prefer: return=representation заглавието на заявката.
За да контролирате кои свойства се връщат, добавете $select опцията за заявка към URL адреса за набора от обекти. Опцията за заявка се игнорира, ако се $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"
}
Актуализиране на няколко записа в една заявка
Най-бързият начин за актуализиране на множество записи от един и същи тип в една заявка е да използвате действието UpdateMultice. Не всички стандартни маси поддържат това действие, но всички еластични маси го правят.
Допълнителна информация:
- Съобщения за групови операции
- Пример: Уеб API Използване на групови операции
- Използване на UpdateMultiple с еластични таблици
Актуализиране на стойност на една собственост
За да актуализирате стойност на едно свойство, използвайте PUT заявка и добавете името на свойството към Uri на обекта.
Следващият пример актуализира 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 заявка с добавено име на свойство към URI на обекта.
Следващият пример изтрива стойността на 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
Бележка
Не можете да използвате този подход с едностойностно навигационно свойство, за да отделите две обекти. За алтернативен подход вижте Disassociated чрез използване на едностойностно навигационно свойство.
Upsert на ред на таблица
Операцията на upsert е подобна на актуализация. Той използва PATCH заявка и използва URI, за да препрати към конкретен запис. Разликата е, че ако записът не съществува, той се създава. Ако вече съществува, той се актуализира.
Upsert е ценен при синхронизиране на данни между външни системи. Външната система може да не съдържа препратка към първичния ключ на таблицата на Dataverse, така че можете да конфигурирате алтернативни ключове за таблицата на Dataverse, като използвате стойности от външната система, които уникално идентифицират записа и в двете системи. Повече информация: Дефиниране на алтернативни ключове за препратки към редове
Можете да видите всички алтернативни ключове, които са дефинирани за таблица, в анотациите за типа обект в документа за $metadata услуга. Повече информация: Алтернативни клавиши.
В следващия пример има таблица с име 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 отговора използва ключовите стойности, а не идентификатора на първичния ключ на GUID за записа.
Отговор:
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 включва минималното количество данни, за предпочитане само колоната за първичен ключ. Повече информация: Актуализиране с върнати данни и Създаване с върнати данни.
Когато използвате алтернативни ключове, не включвайте стойностите на алтернативния ключ в тялото на заявката.
- Когато upsert представлява
Update, тези алтернативни ключови стойности се игнорират. Не можете да актуализирате алтернативни ключови стойности, докато ги използвате за идентифициране на записа. - Когато upsert представлява
Create, ключовите стойности в URL адреса се задават за записа, ако не присъстват в основния текст. Така че няма нужда да ги включвате в тялото на заявката.
Повече информация: Използване на Upsert за създаване или актуализиране на запис
Бележка
Обикновено при създаване на нов запис оставяте системата да зададе стойност на GUID за първичния ключ. Тази практика е най-добра, защото системата генерира ключове, оптимизирани за индекса, и този избор подобрява производителността. Но ако трябва да създадете запис с конкретна стойност на първичен ключ, като например когато стойността на GUID на ключа се генерира от външна система, операцията upsert предоставя начин да направите това.
Предотвратяване на създаване или актуализиране с upsert
Понякога искате да извършите една upsert от възможните операции: или да създадете, или да обновите. Можете да предотвратите тези операции, като използвате If-Match заглавията OR If-None-Match . За повече информация вижте Ограничаване на операциите на upsert.
Основно изтриване
Операцията за изтриване е лесна. Използвайте DELETE глагола с URI на обекта, който искате да изтриете. Това примерно съобщение изтрива акаунт с основна ключова 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
Проверка за дублиращи се записи
За повече информация как да проверите за дублиращи се записи по време на операция за актуализиране вижте Откриване на дублиращи се записи по време на операция за актуализиране с помощта на уеб API.
Изтриване на няколко записа в една заявка
За да изтриете няколко записа от един и същи тип в една заявка, използвайте действието DeleteMultiple . Стандартните маси не поддържат това действие DeleteMultiple , но всички еластични маси го правят.
Бележка
За стандартни таблици използвайте действието BulkDelete. Това действие позволява асинхронно изтриване на записи, които съвпадат с заявка. За повече информация вижте Изтриване на данни на едро.
Допълнителна информация:
- Съобщения за групови операции
- Примерен код на еластична таблица
- Използване на DeleteMultiple с еластични таблици
Актуализиране и изтриване на документи в дялове за съхранение
Ако актуализирате или изтривате данни от еластични таблици, съхранявани в дялове, посочете ключа за дялове, когато достъпвате тези данни.
Повече информация: Избор на стойност на PartitionId
Вижте също
Пример за основни операции на уеб API (C#)
Пример за основни операции на уеб API (JavaScript от страна на клиента)
Извършване на операции с помощта на уеб API
Съставяне на Http заявки и обработка на грешки
Заявка за данни с помощта на уеб API
Създаване на ред на таблица с помощта на уеб API
Извличане на ред на таблица с помощта на уеб API
Свързване и разединяване на редове на таблици с помощта на уеб API
Използване на функции на уеб API
Използване на действия за уеб API
Изпълнение на пакетни операции с помощта на уеб API
Представяне за друг потребител с помощта на уеб API
Извършване на условни операции с помощта на уеб API