Бөлісу құралы:


Web API арқылы кесте жолдарын жаңарту және жою

Деректерді өзгертетін операциялар Web API-дің негізгі бөлігі болып табылады. Қарапайым жаңарту және жою операцияларынан бөлек, сіз бір кесте бағандарына (entity attributes) операциялар жасай аласыз және деректерді жаңартатын немесе енгізетін 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орнатылғанда, бұл атрибуттарды null мәніне орната алмайсыз. Толығырақ ақпарат алу үшін Attribute талаптар деңгейін қараңыз.

Бұл мысал 00000000-0000-0000-0000-00000-0000000000 мәні accountid бар тіркелгі жазбасын жаңартады.

Сұраныс:

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  
  

Ескертпе

Жаңарту кезінде байланысатын және ажырататын объектілер туралы ақпарат алу үшін Бір мәнді навигациялық қасиеттерді пайдалану бөлімін қараңыз.

Қайтарылған деректермен жаңарту

Жаңартып жатқан субъекттен деректерді алу үшін, сұранысыңызды жаңартылған жазбадан 200 (OK) мәртебесімен деректерді қайтаратындай етіп құрастырыңыз PATCH . Бұл нәтижені алу үшін сұраныс тақырыбын қолданыңыз Prefer: return=representation .

Қай қасиеттер қайтарылатынын басқару үшін, entity жиынының URL-ына сұрау опциясын қосыңыз $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 арқылы мүлік атауын субъекттің Uri-іне қосыңыз.

Төмендегі мысал бар account жолдың accountid қасиетін name . мәнімен 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  
  

Бір сипат мәнін жою

Бір қасиеттің мәнін жою үшін, объектінің URI-іне property атауы қосылған сұраныс қолданыңыз 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  
  

Ескертпе

Бұл тәсілді бір мәнді навигациялық қасиетпен екі объектіні ажырату үшін қолдануға болмайды. Балама тәсіл үшін қараңыз: Disassociate арқылы бір мәнді навигациялық қасиет қолдану.

Кесте жолын көтеру

Жаңарту операциясы жаңартуға ұқсас. Ол сұрауды қолданады 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"
}

Құру немесе жаңарту операциялары үшін бірдей жауап аласыз. Жауап тақырыбы жазба үшін GUID бастапқы кілт идентификаторының орнына кілт мәндерін қалай 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)

Жауап бірдей болғандықтан, сіз операцияның A Create немесе Update операцияны білдіретінін білмейсіз.

Егер білу қажет болса, Сіз сұрау тақырыбын Prefer: return=representation пайдалана аласыз. Осы тақырыпты қолдану арқылы жазба жасалғанда жауап және жазба жаңартылғанда жауап 200 OK аласыз201 Created. Бұл опция өнімділікке әсер ететін операцияны қосады Retrieve . Егер сұрау тақырыбын пайдалансаңыз Prefer: return=representation , деректердің ең аз көлемін, жақсырақ тек бастапқы кілт бағанын қамтитынына көз жеткізіңіз $select . Қосымша ақпарат: Қайтарылған деректермен жаңарту және Қайтарылған деректермен жасау.

Балама кілттерді қолданғанда, сұраныстың мәтініне балама кілт мәндерін қоспаңыз.

  • Upsert , бұл балама кілт мәндерін білдірген Updateкезде елеусіз қалады. Жазбаны анықтау үшін оларды пайдалану кезінде баламалы кілт мәндерін жаңарту мүмкін емес.
  • Upsert a Create-ны білдірген кезде, URL мекенжайындағы кілт мәндер, егер олар денеде болмаса, жазба үшін орнатылады. Сондықтан оларды өтініш органына қосудың қажеті жоқ.

Қосымша ақпарат: Жазбаны жасау немесе жаңарту үшін Upsert бағдарламасын пайдалану

Ескертпе

Әдетте жаңа жазба жасағанда жүйе негізгі кілтке GUID мәнін тағайындайды. Бұл әдіс ең жақсысы, себебі жүйе индекске оңтайландырылған кілттерді шығарады және бұл таңдау өнімділікті арттырады. Бірақ егер сізге белгілі бір бастапқы кілт мәні бар жазба жасау қажет болса, мысалы, кілт GUID мәнін сыртқы жүйе жасаған кезде, upsert операция мұны істеудің жолын ұсынады.

Upsert көмегімен жасауды немесе жаңартуды болдырмау

Кейде upsert сіз ықтимал операциялардың бірін болдырмау үшін әрекет еткіңіз келеді: жасау немесе жаңарту. Бұл операцияларды OR If-None-Match тақырыптарын қолдану If-Match арқылы болдырмауға болады. Қосымша ақпарат алу үшін Upsert операцияларын шектеу бөлімін қараңыз.

Негізгі жою

Жою операциясы қарапайым. Жойылғыңыз келетін нысанның URI-мен етістікті 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  

Қайталанатын жазбаларды тексеру

Жаңарту операциясы кезінде қайталанатын жазбаларды тексеру әдісі туралы қосымша ақпарат алу үшін Веб-API арқылы жаңарту операциясы кезінде көшірмелерді анықтау бөлімін қараңыз.

Бір сұрауда бірнеше жазбаны жою

Бір өтініште бір типтегі бірнеше жазбаны жою үшін әрекетті DeleteMultiple қолданыңыз. Стандартты кестелер бұл DeleteMultiple әрекетті қолдамайды, бірақ барлық серпімді үстелдер қолдайды.

Ескертпе

Стандартты кестелер үшін BulkDelete әрекетін қолданыңыз. Бұл әрекет сұранысқа сәйкес келетін жазбаларды асинхронды түрде жоюға мүмкіндік береді. Толығырақ ақпарат алу үшін Delete data in bulk бөлімін қараңыз.

Қосымша ақпарат:

Сақтау бөлімдеріндегі құжаттарды жаңарту және жою

Егер сіз бөлімдерде сақталған elastic кесте деректерін жаңартып немесе өшіріп жатсаңыз, сол деректерге қол жеткізгенде бөлім кілтін көрсетіңіз.

Қосымша ақпарат: PartitionId мәнін таңдау

Келесіні де қараңыз:

Web API негізгі операцияларының үлгісі (C#)
Web API негізгі операцияларының үлгісі (клиент жағындағы JavaScript)
Web API көмегімен операцияларды орындау
HTTP сұрауларын жасау және қателерді өңдеу
Web API көмегімен сұрау деректері
Веб-API арқылы кесте жолын жасау
Веб-API арқылы кесте жолын алу
Веб-API арқылы кесте жолдарын байланыстыру және ажырату
Веб-API функцияларын пайдалану
Web API әрекеттерін пайдалану
Веб-API арқылы пакеттік операцияларды орындау
Веб-API арқылы басқа пайдаланушыны имитациялау
Веб-API арқылы шартты операцияларды орындау