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


Порталдардың Веб-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 интерфейстерін пайдаланып операцияларды жазады, жаңартады және жояды

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