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


Порталдардың Веб-API интерфейсі арқылы деректерді сұрау

Power Pages платформасында қолжетімді веб-API операцияларын пайдалануға болады. Веб-API операциялары HTTP сұраулары мен жауаптарынан тұрады. Бұл мақалада HTTP сұрауында қолдануға болатын үлгіні оқу операциялары, URI және JSON үлгісі берілген.

Алғышарттар

  • Веб-сайтыңыздың нұсқасы 9.4.1.х немесе одан кейінгі нұсқа болуы керек.

  • Веб-API әрекеттері үшін кесте мен өрісті қосыңыз. Қосымша ақпарат: Веб-API сайт параметрлері

  • Порталдарың веб‑API интерфейсі кесте жазбаларына қатынасады және пайдаланушыларға байланысты веб-рөлдер арқылы берілген кесте рұқсаттарын орындайды. Дұрыс кесте рұқсаттарын конфигурациялағаныңызға көз жеткізіңіз. Қосымша ақпарат: Веб-рөлдер жасау

Ескертпе

Порталдардың Веб-API интерфейсін пайдаланатын Dataverse кестелері үшін EntitySetName параметрін пайдалануыңыз қажет, мысалы, тіркелгі кестесіне қатынасу үшін код синтаксисі тіркелгілер ішіндегі EntitySetName параметрін пайдаланады.

Сұрау жазбалары

Келесі мысалда тіркелгі жазбалары сұралады:

Операция Әдіс URI
Кесте жазбаларын шығарып алу АЛУ [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
Алғашқы үш нысан жазбасын шығарып алу АЛУ [Portal URI]/_api/accounts?$select=name,revenue&$top=3

Мысалы:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3

Тіркелгіні тіркелгі ИД арқылы шығарып алыңыз:

Операция Әдіс URI
Жазба үшін арнайы сипатты шығарып алу АЛУ [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
АЛУ [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
АЛУ [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 арқылы қайтарылады. Ешқандай сипаттар көрсетілмесе, қате қайтарылады.

Сүзгі нәтижелері

пайдаланыңыз $сүзгі жолдар қайтарылатын критерийлерді орнату үшін жүйелік сұрау опциясы.

Стандартты сүзгі амалдағыштары

Веб-API келесі кестеде тізімделген стандартты OData сүзгі амалдағыштарына қолдау көрсетеді:

Оператор Сипаттамасы Мысал
Салыстыру операторлары
eq Тең $сүзгі = табыс эквивациясы 100000
ne Тең емес $сүзгі = 100000 жоқ
gt Келесіден үлкен $сүзгі = табыс GT 100000
ge Келесіден үлкен не оған тең $сүзгі=табыс ге 100000
lt Келесіден кіші $сүзгі=түсім lt 100000
le Келесіден кіші не оған тең $сүзгі = 100000 кірісі
Логикалық операторлар
ЖӘНЕ Логикалық және $сүзгі=түсім lt 100000 және табыс GT 2000
немесе Логикалық немесе $сүзгі=құрамында(атауы,'(үлгі)') немесе құрамында(аты,'сынақ')
not Логикалық теріске шығару $сүзгі=құрамында жоқ(аты,'үлгі')
Топтастыру операторлары
( ) Артықшылықты топтастыру (құрамында(атауы,'үлгі') немесе құрамында(аты,'сынақ')) және табыс 5000 гт

Стандартты сұрау функциялары

Веб-API осы стандартты OData жол сұрау функцияларына қолдау көрсетеді:

Функция Мысал
қамтиды $сүзгі=құрамында(аты,'(үлгі)')
деп аяқталады $filter=endswith(name,'Inc.')
келесімен басталады $filter=startswith(аты,'a')

Dataverse сұрау функциялары

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

Реттеу нәтижелері

$orderby жүйелік сұрау опциясы арқылы элементтердің қайтарылатын ретін көрсетіңіз. Сәйкесінше өсу немесе кему ретін көрсету үшін asc немесе desc жұрнағын пайдаланыңыз. Егер жұрнақ қолданылмаса, әдепкі бойынша өсу реті болады. Келесі мысалда өсу және кему атауы бойынша реттелген тіркелгілердің атауы мен кіріс сипаттарын шығарып алу көрсетіледі.

Әдіс URI
АЛУ [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, арқылы деректеріңізді келесі мысалдарда көрсетілгендей динамикалық түрде агрегаттауға және топтауға болады:

Сценарийлер Мысал
Сұраудағы бірегей күйлердің тізімі тіркелгілер?$apply=groupby((күй коды))
Есептелген мәннің агрегаттау жиынтығы мүмкіндіктер?$apply=aggregate(жалпы сомасы бар болжалды мән)
Есептелген мән мен күйге негізделген мәміленің орташа мөлшері мүмкіндіктер?$apply=топ бойынша((күй коды),жиынтық(орташа мән ретінде орташа есептелген мән)
Күйге негізделген есептелген мән жиынтығы мүмкіндіктер?$apply=топ бойынша((күй коды),жинақтау(жалпы сомасымен есептелген мән))
Тіркелгі атауы бойынша жалпы мүмкіндік табысы мүмкіндіктер?$apply=топ бойынша((ата-аналық есептік жазба/атауы),жинақтау(жалпы сомасы бар болжалды мән))
"WA" ішіндегі тіркелгілер үшін негізгі контакт атаулары тіркелгілер?$apply=сүзгі(адрес1_статеорпровинция эквивалент 'WA')/топ((негізгі контакті/толық аты))
Соңғы жасалған жазба күні мен уақыты accounts?$apply=aggregate(максимум соңғы жасау ретінде жасалған)
Бірінші жасалған жазба күні мен уақыты тіркелгілер?$apply=aggregate(бірінші Жасалу ретінде минмен жасалған)

Жолдар санын шығарып алу

Сүзгі критерийлеріне 5000-ға дейін сәйкес келетін нысандар санын қосу үшін шынайы мәні бар $count жүйелік сұрау опциясын пайдаланыңыз.

Әдіс URI
АЛУ [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
АЛУ [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 жүйелік сұрау опциясын пайдаланыңыз.

Байланысты шарлау сипатын іздеу

пайдалану керек 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
АЛУ [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
АЛУ [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)

FetchXml арқылы жазбаларды сұрау

FetchXml сұрауын FetchXml сұрау параметрін пайдаланып нысан жиынына URL кодталған жол мәні ретінде жіберіңіз.

Мысалы, есептік жазба нысандары жиынынан деректерді шығарып алу үшін тіркелгіге нысан элементінің атауы параметрін орнататын FetchXml сұрауын жасаңыз.

<fetch top='2'>
  <entity name='account'>
      <attribute name='name' />
  </entity>
</fetch>

Алдыңғы сұрау үшін URL-кодталған жол:

%3Cfetch%20top%3D%275%27%3E%0D%0A%3Centity%20name%3D%27account%27%3E%0D%0A%3Cattribute%20name%3D%27name%27%2F%3E%0D%0A%3C%2Fentity%3E%0D%0A%3C%2Ffetch%3E
Әдіс URI
АЛУ [Portal URI]/_api/accounts?fetchxml

Мысалы:
https://contoso.powerappsportals.com/_api/accounts?fetchXml=%3Cfetch%20top%3D%275%27%3E%0D%0A%3Centity%20name%3D%27account%27%3E%0D%0A%3Cattribute%20name%3D%27name%27%2F%3E%0D%0A%3C%2Fentity%3E%0D%0A%3C%2Ffetch%3E

Үлгі жауап

{
  "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)"
      }
    }
  ]
}

Келесі қадам

Порталдар Web API көмегімен әрекеттерді жазады, жаңартады және жояды

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