Порталдардың Веб-API интерфейсі арқылы деректерді сұрау
Power Pages платформасында қолжетімді веб-API операцияларын пайдалануға болады. Веб-API операциялары HTTP сұраулары мен жауаптарынан тұрады. Бұл мақалада HTTP сұрауында қолдануға болатын үлгіні оқу операциялары, URI және JSON үлгісі берілген.
Алғышарттар
Веб-сайтыңыздың нұсқасы 9.4.1.х немесе одан кейінгі нұсқа болуы керек.
Веб-API әрекеттері үшін кесте мен өрісті қосыңыз. Қосымша ақпарат: Веб-API сайт параметрлері
Порталдарың веб‑API интерфейсі кесте жазбаларына қатынасады және пайдаланушыларға байланысты веб-рөлдер арқылы берілген кесте рұқсаттарын орындайды. Дұрыс кесте рұқсаттарын конфигурациялағаныңызға көз жеткізіңіз. Қосымша ақпарат: Веб-рөлдер жасау
Ескертпе
Порталдардың Веб-API интерфейсін пайдаланатын Dataverse кестелері үшін EntitySetName параметрін пайдалануыңыз қажет, мысалы, тіркелгі кестесіне қатынасу үшін код синтаксисі тіркелгілер ішіндегі EntitySetName параметрін пайдаланады.
Сұрау жазбалары
Келесі мысалда тіркелгі жазбалары сұралады:
Әрекет | Әдіс | URI |
---|---|---|
Кесте жазбаларын шығарып алу | GET |
[Portal URI]/_api/accounts
Мысал: https://contoso.powerappsportals.com/_api/accounts |
Жауап үлгісі
{
"value": [
{
"@odata.etag": "W/\"1066412\"",
"name": "Fourth Coffee (sample)",
"accountid": "d2e11ba8-92f6-eb11-94ef-000d3a5aa607"
},
{
"@odata.etag": "W/\"1066413\"",
"name": "Litware, Inc. (sample)",
"accountid": "d4e11ba8-92f6-eb11-94ef-000d3a5aa607"
}
]
}
Алғашқы үш тіркелгі үшін атау сипатын қайтару үшін $select және $top жүйелік сұрау опцияларын пайдаланыңыз:
Әрекет | Әдіс | URI |
---|---|---|
Алғашқы үш нысан жазбасын шығарып алу | GET |
[Portal URI]/_api/accounts?$select=name,revenue&$top=3
Мысал: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Тіркелгіні тіркелгі ИД арқылы шығарып алыңыз:
Әрекет | Әдіс | URI |
---|---|---|
Жазба үшін арнайы сипатты шығарып алу | GET |
[Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name
Мысал: https://contoso.powerappsportals.com/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name |
Жауап үлгісі
{
"@odata.etag": "W/\"1066414\"",
"name": "Adventure Works (sample)",
"accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}
Жүйелік сұрау опцияларын қолдану
Нысан жиынының URL мекенжайына қосатын жүйелік сұрау опцияларының әрқайсысы сұрау жолдарының синтаксисі арқылы қосылады. Біріншісі [?] кейін қосылады және келесі сұрау опциялары [&] арқылы бөлінеді. Барлық сұрау опциялары келесі мысалда көрсетілгендей регистрді ескереді:
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3
Мысал: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3 |
Арнайы сұрау сипаттары
Келесі мысалда көрсетілгендей қайтарылған сипаттарды шектеу үшін $select жүйелік сұрау опциясын пайдаланыңыз:
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/accounts?$select=name,revenue&$top=3
Мысал: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Маңызды
Бұл өнімділіктің ең жақсы тәжірибесі. Егер сипаттар көрсетілмесе және Webapi/<table name>/fields
сайт параметрінің мәнін *
мәніне теңшеген болсаңыз, барлық сипаттар $select
арқылы қайтарылады. Ешқандай сипаттар көрсетілмесе, қате қайтарылады.
Сүзгі нәтижелері
Жолдар қайтарылатын критерийлерді орнату үшін $filter жүйелік сұрау опциясын пайдаланыңыз.
Стандартты сүзгі амалдағыштары
Веб-API келесі кестеде тізімделген стандартты OData сүзгі амалдағыштарына қолдау көрсетеді:
Оператор | Сипаттама | Мысал |
---|---|---|
Салыстыру операторлары | ||
eq | Тең | $filter=revenue eq 100000 |
ne | Тең емес | $filter=revenue ne 100000 |
gt | Келесіден үлкен | $filter=revenue gt 100000 |
ge | Келесіден үлкен не оған тең | $filter=revenue ge 100000 |
lt | Келесіден кіші | $filter=revenue lt 100000 |
le | Келесіден кіші не оған тең | $filter=revenue le 100000 |
Логикалық операторлар | ||
ЖӘНЕ | Логикалық және | $filter=revenue lt 100000 and revenue gt 2000 |
немесе | Логикалық немесе | $filter=contains(name,'(sample)') or contains(name,'test') |
not | Логикалық теріске шығару | $filter=not contains(name,'sample') |
Топтау операторлары | ||
( ) | Артықшылықты топтастыру | (contains(name,'sample') or contains(name,'test')) and revenue gt 5000 |
Стандартты сұрау функциялары
Веб-API осы стандартты OData жол сұрау функцияларына қолдау көрсетеді:
Функция | Мысал |
---|---|
қамтиды | $filter=contains(name,'(sample)') |
деп аяқталады | $filter=endswith(name,'Inc.') |
келесімен басталады | $filter=startswith(name,'a') |
Dataverse сұрау функциялары
Веб-API нәтижелерді сүзу үшін Dataverse сұрау функцияларын қолдайды. Қосымша ақпарат алу үшін Веб-API сұрау функциясының анықтамасы бөлімін қараңыз.
Реттеу нәтижелері
$orderby жүйелік сұрау опциясы арқылы элементтердің қайтарылатын ретін көрсетіңіз. Сәйкесінше өсу немесе кему ретін көрсету үшін asc немесе desc жұрнағын пайдаланыңыз. Егер жұрнақ қолданылмаса, әдепкі бойынша өсу реті болады. Келесі мысалда өсу және кему атауы бойынша реттелген тіркелгілердің атауы мен кіріс сипаттарын шығарып алу көрсетіледі.
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000
Мысал: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000 |
Нәтижелерді агрегаттау және топтау
$apply, арқылы деректеріңізді келесі мысалдарда көрсетілгендей динамикалық түрде агрегаттауға және топтауға болады:
Сценарийлер | Мысал |
---|---|
Сұраудағы бірегей күйлердің тізімі | accounts?$apply=groupby((statuscode)) |
Есептелген мәннің агрегаттау жиынтығы | opportunities?$apply=aggregate(estimatedvalue with sum as total) |
Есептелген мән мен күйге негізделген мәміленің орташа мөлшері | opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue) |
Күйге негізделген есептелген мән жиынтығы | opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with sum as total)) |
Тіркелгі атауы бойынша жалпы мүмкіндік табысы | opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum as total)) |
"WA" ішіндегі тіркелгілер үшін негізгі контакт атаулары | accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname)) |
Соңғы жасалған жазба күні мен уақыты | accounts?$apply=aggregate(createdon with max as lastCreate) |
Бірінші жасалған жазба күні мен уақыты | accounts?$apply=aggregate(createdon with min as firstCreate) |
Жолдар санын шығарып алу
Сүзгі критерийлеріне 5000-ға дейін сәйкес келетін нысандар санын қосу үшін шынайы мәні бар $count жүйелік сұрау опциясын пайдаланыңыз.
Әдіс | URI |
---|---|
GET |
[Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true
Мысал: https://contoso.powerappsportals.com/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true |
Жауап үлгісі
{
"@odata.count": 10,
"value": [
{
"@odata.etag": "W/\"1066412\"",
"name": "Fourth Coffee (sample)",
"accountid": "d2e11ba8-92f6-eb11-94ef-000d3a5aa607"
},
{
"@odata.etag": "W/\"1066413\"",
"name": "Litware, Inc. (sample)",
"accountid": "d4e11ba8-92f6-eb11-94ef-000d3a5aa607"
},
{
"@odata.etag": "W/\"1066414\"",
"name": "Adventure Works (sample)",
"accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}
]
}
Есептен басқа ешбір деректерді қайтарғыңыз келмесе, тек мәнді алу үшін кез келген жиынға $count қолдануға болады.
Әдіс | URI |
---|---|
GET |
[Portal URI/_api/accounts/$count
Мысал: https://contoso.powerappsportals.com/_api/accounts/$count |
Жауап үлгісі
3
Бағанды салыстыру
Келесі мысалда веб-API арқылы бағандарды салыстыру жолы көрсетіледі:
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/contacts?$select=firstname&$filter=firstname eq lastname
Мысал: https://contoso.powerappsportals.com/_api/contacts?$select=firstname&$filter=firstname eq lastname |
Қатысыт кесте жазбаларын сұрау арқылы шығарып алу
Қатысты нысандардан қандай деректер қайтарылатынын басқару үшін навигация сипаттарындағы $expand жүйелік сұрау опциясын пайдаланыңыз.
Байланысты шарлау сипатын іздеу
$expand сұрау опциясын пайдаланған кезде, іздеу төлсипаты ретінде Microsoft.Dynamics.CRM.associatednavigationproperty пайдалануыңыз қажет.
Төлсипаттың Microsoft.Dynamics.CRM.associatednavigationproperty анықтау үшін, келесі атау шарты арқылы бағанға келесі http GET сұрауын жасауға болады: _name_value.
Келесі мысалда сұраудағы атауды пішімдеу арқылы primarycontactid баған атауын көрсету арқылы Тіркелгі кестесінің Негізгі контакт бағанының байланысты навигация сипатын анықтай аламыз: _primarycontactid_value.
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/accounts?$select=_primarycontactid_value
Мысал https://contoso.powerappsportals.com/_api/accounts?$select=_primarycontactid_value |
Жауап үлгісі
{
"value": [
{
"@odata.etag": "W/\"2465216\"",
"_primarycontactid_value@OData.Community.Display.V1.FormattedValue": "Yvonne McKay (sample)",
"_primarycontactid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "primarycontactid",
"_primarycontactid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "contact",
"_primarycontactid_value": "417319b5-cd18-ed11-b83c-000d3af4d812",
"accountid": "2d7319b5-cd18-ed11-b83c-000d3af4d812"
}
]
}
Жауаптан байланысты навигация сипаты primarycontactid екенін көреміз. Байланысты шарлау сипаты кестенің қалай жасалғанына байланысты іздеу бағанының логикалық атауы немесе схема атауы болуы мүмкін.
Қосымша ақпарат алу үшін Іздеу сипаттары туралы деректерді шығарып алу бөлімін қараңыз.
Бір мәнді навигация сипаттарын кеңейту арқылы қатысты кесте жазбаларын шығарып алу
Келесі мысалда барлық тіркелгі жазбалары үшін контактіні шығарып алу жолы көрсетіледі. Қатысты контакт жазбалары үшін біз тек contactid және fullname шығарып алудамыз.
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname)
Мысал: https://contoso.powerappsportals.com/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) |
Жауап үлгісі
{
"value": [
{
"@odata.etag": "W/\"1066412\"",
"name": "Fourth Coffee (sample)",
"accountid": "d2e11ba8-92f6-eb11-94ef-000d3a5aa607",
"primarycontactid": {
"contactid": "e6e11ba8-92f6-eb11-94ef-000d3a5aa607",
"fullname": "Yvonne McKay (sample)"
}
},
{
"@odata.etag": "W/\"1066413\"",
"name": "Litware, Inc. (sample)",
"accountid": "d4e11ba8-92f6-eb11-94ef-000d3a5aa607",
"primarycontactid": {
"contactid": "e8e11ba8-92f6-eb11-94ef-000d3a5aa607",
"fullname": "Susanna Stubberod (sample)"
}
}
]
}
Жиынтық мәнді навигация сипаттарын кеңейту арқылы қатысты кестелерді шығарып алу
Нысан жиындарына қатысты кестелерді шығарып алу үшін жиынтық мәнді навигация параметрлерін кеңейтсеңіз, деректер болса, тереңдіктің бір деңгейі ғана қайтарылады. Әйтпесе, жиын бос массивті қайтарады.
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)
Мысал: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart) |
Бір мәнді және жиынтық мәнді навигация сипаттарын кеңейту арқылы қатысты кестелерді шығарып алу
Келесі мысалда бір мәнді және жиынтық мәнді навигация сипаттары арқылы нысан жиындары үшін қатысты нысандарды қалай кеңейтуге болатыны көрсетіледі. Кодыңыздың синтаксисінде кесте қарым-қатынасының атауын көрсетуіңіз керек.
Әдіс | URI |
---|---|
GET |
[Portal URI]/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)
Мысал: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart) |
Келесі қадам
Порталдар веб-API интерфейстерін пайдаланып операцияларды жазады, жаңартады және жояды