Interogați datele utilizând portalurile API Web
Puteți utiliza operațiunile API Web disponibile în Power Pages. 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 site-ului 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. Prima este atașată după [?] și 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
Folosiți opțiunea de interogare a sistemului $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
Folosește opțiunea de interogare a sistemului $filter 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 de 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 folosind opțiunea de interogare $orderby a sistemului. Folosește 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
Prin utilizarea $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
Folosiți opțiunea de interogare $count de sistem cu valoarea 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
Folosește opțiuneaa de interogare $expand a sistemului 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 scriu, actualizează și șterg operații utilizând API-ul web