Interogați datele utilizând portalurile API Web

Notă

Începând cu 12 octombrie 2022, portalurile Power Apps sunt Power Pages. Mai multe informații: Microsoft Power Pages este acum disponibil în general (blog)
În curând vom migra și vom îmbina documentația portalurilor Power Apps cu documentația Power Pages.

Puteți utiliza operațiunile API Web disponibile în portaluri. Operațiunile API web constau în cereri și răspunsuri HTTP. În acest articol furnizează exemple de operațiuni citire, metode, URI și exemplul JSON pe care îl puteți utiliza în cererea HTTP.

Cerințe preliminare

  • Versiunea portalului dvs. trebuie să fie 9.4.1.x sau o versiune superioară.

  • Activați tabelul și câmpul pentru operațiunile API Web. Pentru mai multe informații: Setările site-ului pentru API Web

  • Portalurile API Web accesează înregistrările tabelelor și urmează permisiunile de tabel date utilizatorilor prin intermediul rolurile web asociat. Asigurați-vă că configurați permisiunile corecte pentru tabel. Mai multe informații: Crearea rolurilor Web

Notă

Când vă referiți la tabelele Dataverse care utilizează portalurile API Web , trebuie să utilizați EntitySetName, de exemplu, pentru a accesa tabelul cont, sintaxa codului va folosi EntitySetName a conturilor.

Înregistrări interogare

Următorul exemplu interogează înregistrările de cont:

Operaţiune Metodă URI
Preluați înregistrările din tabel GET [Portal URI]/_api/accounts

Exemplu:
https://contoso.powerappsportals.com/_api/accounts

Răspuns exemplu

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

Utilizați opțiunile de interogare de sistem $select și $top pentru a returna proprietatea de nume pentru primele trei conturi:

Operaţiune Metodă URI
Preluați primele trei înregistrări ale entității GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3

Preluați contul utilizând ID-ul contului:

Operaţiune Metodă URI
Preluați o anumită proprietate pentru o înregistrare GET [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

Exemplu:
https://contoso.powerappsportals.com/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

Răspuns exemplu

{
    "@odata.etag": "W/\"1066414\"",
    "name": "Adventure Works (sample)",
    "accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}

Aplicați opțiunile de interogare de sistem

Fiecare dintre opțiunile de interogare de sistem pe care le atașați la adresa URL pentru setul de entități este adăugată folosind sintaxa pentru șirurile de interogare. Primul se anexează după [?] iar următoarele opțiuni de interogare sunt separate folosind [&]. Toate opțiunile de interogare sunt sensibile la majuscule și minuscule, așa cum se arată în exemplul următor:

Metodă URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3

Proprietăți solicitare specifice

Utilizați opțiunea de interogare de sistem $select pentru a limita proprietățile returnate, așa cum se arată în exemplul următor:

Metodă URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3

Important

Acestea sunt cele mai bune practici de performanță. Dacă proprietățile nu sunt specificate și ați configurat valoarea setării Webapi/<table name>/fields site-ului la *, atunci toate proprietățile vor fi returnate folosind $select. Dacă nu sunt specificate proprietăți, atunci va fi returnată o eroare.

Filtrează rezultatele

Utilizați $filter opțiunea de interogare de sistem pentru a seta criteriile pentru care vor fi returnate rândurile.

Operatori filtru standard

API-ul Web acceptă operatorii standard de filtru OData enumerați în următorul tabel:

Operator Descriere Exemplu
Operatori de comparație
eq Egal $filter=revenue eq 100000
ne Nu este egal cu $filter=revenue ne 100000
gt Mai mare decât $filter=revenue gt 100000
ge Mai mare sau egal cu $filter=revenue ge 100000
lt Mai mic decât $filter=revenue lt 100000
le Mai mic sau egal cu $filter=revenue le 100000
Operatori logici
AND Logic și $filter=revenue lt 100000 and revenue gt 2000
or Logic sau $filter=contains(name,'(sample)') or contains(name,'test')
Not Negație logică $filter=not contains(name,'sample')
Operatori grupare
( ) Gruparea de prioritate (contains(name,'sample') or contains(name,'test')) and revenue gt 5000

Funcții standard de interogare

Web API acceptă aceste funcții standard de interogare a șirurilor OData:

Funcţie Exemplu
conține $filter=contains(name,'(sample)')
endswith $filter=endswith(name,'Inc.')
începe cu $filter=startswith(name,'a')

Dataverse funcții interogare

Web API-ul acceptă funcții de interogare Dataverse pentru a filtra rezultatele. Pentru mai multe informații, consultați Referință pentru funcția de interogare API Web.

Rezultate comandă

Specificați ordinea în care sunt returnate articolele utilizând opțiunea de interogare de sistem $orderby . Utilizați sufixul asc sau desc pentru a specifica ordinea crescătoare sau, respectiv, descrescătoare. Valoarea implicită este crescătoare dacă sufixul nu este aplicat. Următorul exemplu arată preluarea numelui și proprietăților veniturilor conturilor ordonate după venit crescător și după nume descrescător.

Metodă URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000

Rezultate agregate și grupate

Folosind $apply, vă puteți agrega și grupa datele în mod dinamic, așa cum se vede în următoarele exemple:

Scenarii Exemplu
Lista stărilor unice din interogare accounts?$apply=groupby((statuscode))
Suma agregată a valorii estimate opportunities?$apply=aggregate(estimatedvalue with sum as total)
Dimensiunea medie a tranzacției pe baza valorii estimate și a statutului opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue)
Suma valorii estimate în funcție de stare opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with sum as total))
Venitul total de oportunitate în funcție de numele contului opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum as total))
Nume de contact principal pentru conturile din „WA” accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname))
Ultima dată și oră de creare a unei înregistrări accounts?$apply=aggregate(createdon with max as lastCreate)
Prima dată și oră de creare a unei înregistrări accounts?$apply=aggregate(createdon with min as firstCreate)

Preluați un număr de rânduri

Utilizați $count opțiunea de interogare de sistem cu o valoare true pentru a include un număr de entități care corespund criteriilor de filtrare până la 5.000.

Metodă URI
GET [Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true

Răspuns exemplu

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

Dacă nu doriți să returnați date cu excepția numărului, puteți aplica $count la orice colecție pentru a obține doar valoarea.

Metodă URI
GET [Portal URI/_api/accounts/$count

Exemplu:
https://contoso.powerappsportals.com/_api/accounts/$count

Răspuns exemplu

3

Comparația coloanelor

Următorul exemplu arată cum să comparați coloanele folosind API-ul Web:

Metodă URI
GET [Portal URI]/_api/contacts?$select=firstname&$filter=firstname eq lastname

Exemplu:
https://contoso.powerappsportals.com/_api/contacts?$select=firstname&$filter=firstname eq lastname

Preluați înregistrările de tabel asociate cu o interogare

Utilizați opțiunea $expand interogare de sistem din proprietățile de navigare pentru a controla ce date de la entitățile asociate sunt returnate.

Căutare asociere proprietate navigare

Va trebui să utilizați Microsoft.Dynamics.CRM.associatednavigationproperty ca atribut de căutare atunci când utilizați opțiunea de interogare $expand.

Pentru a determina Microsoft.Dynamics.CRM.associatednavigationproperty a unui atribut, puteți face următoarea solicitare http GET pentru coloană folosind următoarea convenție de denumire: _name_value.

În exemplul următor, putem determina proprietatea de navigare asociată a coloanei Contact primar a tabelului Cont prin specificarea numelui coloanei primarycontactid prin formatarea numelui în solicitare: _primarycontactid_value.

Metodă URI
GET [Portal URI]/_api/accounts?$select=_primarycontactid_value

Exemplu
https://contoso.powerappsportals.com/_api/accounts?$select=_primarycontactid_value

Răspuns exemplu

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

Vedem din răspuns că proprietatea de navigare asociată este primarycontactid. Proprietatea de navigare asociată poate fi fie a coloanei de căutare numele logic sau numele schemei în funcție de modul în care a fost creat tabelul.

Pentru mai multe informații vezi Preluați date despre proprietățile de căutare.

Preluați înregistrările de tabel asociate prin extinderea proprietăților de navigare cu o singură valoare

Următorul exemplu arată cum să preluați contactul pentru toate înregistrările contului. Pentru înregistrările de contact aferente, recuperăm doar contactid și fullname.

Metodă URI
GET [Portal URI]/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname)

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname)

Răspuns exemplu

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

Preluați tabele asociate prin extinderea proprietăților de navigare cu colecție

Dacă extindeți parametrii de navigare valorați în colecție pentru a prelua tabele înrudite pentru seturile de entități, este returnat un singur nivel de profunzime dacă există date. În caz contrar, colecția va returna o matrice goală.

Metodă URI
GET [Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)

Preluați tabele asociate prin extinderea proprietăților de navigare atât cu o singură valoare cât și cu colecție

Următorul exemplu demonstrează cum puteți extinde entitățile asociate pentru seturi de entități folosind atât proprietăți de navigare unice, cât și proprietăți de navigare cu valoare de colecție. Va trebui să specificați numele relației de tabel în sintaxa codului dvs.

Metodă URI
GET [Portal URI]/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)

Exemplu:
https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)

Următorul pas

Portalurile scrie, actualizează și șterg operații utilizând API-ul web

Consultați și

Prezentare generală a API-ului web pentru portaluri
Tutorial: Utilizarea API-ului web pentru portal
Configurarea permisiunilor pentru coloane

Notă

Ne puteți spune care preferințele dvs. lingvistice pentru documentație? Răspundeți la un chestionar scurt. (rețineți că acest chestionar este în limba engleză)

Chestionarul va dura aproximativ șapte minute. Nu sunt colectate date personale (angajament de respectare a confidențialității).