Подаци упита помоћу Web API-ја за портале
Напомена
Од 12. октобра 2022. Power Apps портали постају Power Pages. Више информација: Услуга Microsoft Power Pages је сада општедоступна (блог)
Ускоро ћемо мигрирати и објединити документацију о Power Apps порталима са документацијом о услузи Power Pages.
Можете обављати доступне Web API операције у порталима. Web API операције састоје се од HTTP захтева и одговора. Овај чланак наводи примере операција, метода, URI-ја и JSON примере читања које можете користити у HTTP захтеву.
Предуслови
Верзија вашег портала мора бити 9.4.1.x или виша.
Омогућите табелу и поље за Web API операције. Још информација: Поставке локације за Web API
Web API за портале приступа записима табеле и прати дозволе за табеле дате корисницима путем придружених веб-улога. Уверите се да сте конфигурисали одговарајуће дозволе за табелу. Још информација: Креирање веб-улога
Напомена
Када се позивате на Dataverse табеле које користе Web API портала, потребно је да користите 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 |
Преузми пословни контакт помоћу ID-а пословног контакта:
Операција | Метод | 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 |
Својства специфична за захтев
Користите опцију $ селецт да бисте ограничили враћена својства као што је приказано у следећем примеру:
Метод | 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
. Ако нису наведена својства, биће враћена грешка.
Резултати филтера
Користите $ филтер системског упита да бисте поставили критеријуме за које ће редови бити враћени.
Стандардни оператори филтера
Web 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 |
or | Логичко „или“ | $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 |
Стандардне функције упита
Web API подржава ове стандардне OData функције упита ниске:
Function | Пример |
---|---|
садржи | $filter=contains(name,'(sample)') |
завршава се са | $filter=endswith(name,'Inc.') |
startswith | $filter=startswith(name,'a') |
Dataverse функције упита
Web API подржава Dataverse функције упита за филтрирање резултата. Више информација потражите у чланку Референца Web API функција упита.
Редослед резултата
Наведите редослед којим се артикли враћају помоћу $ ордербy системског упита. Користите асц или десц суфикс да бисте навели растући или опадајући редослед. Подразумевана вредност је растући редослед ако суфикс није примењен. Следећи пример приказује преузимање својстава имена и прихода пословних контаката сложених по приходу у растућем редоследу и по имену у опадајућем редоследу.
Метод | 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 |
Резултати агрегирања и груписања
Коришћењем $ апплy податке можете да агрегирате и групирате динамички као што се види у следећим примерима:
Сценарији | Пример |
---|---|
Листа јединствених статуса у упиту | 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) |
Преузимање броја редова
Користите $ цоунт системског упита са вредношћу која је тачна да бисте укључили пребројавање ентитета који одговарају критеријумима филтера до 5.000.
Метод | 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"
}
]
}
Ако не желите да вратите податке осим пребројавања, можете да примените $ цоунт било коју колекцију да бисте добили само вредност.
Метод | URI |
---|---|
GET | [Portal URI/_api/accounts/$count Пример: https://contoso.powerappsportals.com/_api/accounts/$count |
Пример одговора
3
Поређење колона
Следећи пример приказује како се упоређују колоне помоћу Web 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 |
Преузимање записа повезаних табела упитом
Користите опцију $ еxпанд упита у својствима навигације да бисте контролисали податке повезаних ентитета.
Својство навигације повеане са проналажењем
Мораћете да користите Microsoft.Dynamics.CRM.associatednavigationproperty као атрибут проналажења када користите опцију упита $expand.
Да бисте утврдили 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) |
Следећи корак
Операције писања, ажурирања и брисања на порталима помоћу Web API-ја
Погледајте и
Преглед Web API-ја за портале
Водич: Коришћење Web API-ја за портале
Конфигурисање дозвола за колоне
Напомена
Можете ли нам рећи о својим жељеним поставкама језика у документацији? Испуните кратку анкету. (имајте на уму да је ова анкета на енглеском језику)
Анкета ће трајати око седам минута. Не прикупљају се лични подаци (изјава о приватности).