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țiunea | Metodă | URI |
---|---|---|
Preluați înregistrările din tabel | OBŢINE | [Portal URI]/_api/accounts Exemplu: https://contoso.powerappsportals.com/_api/accounts |
Exemplu răspuns
{
"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țiunea | Metodă | URI |
---|---|---|
Preluați primele trei înregistrări ale entității | OBŢINE | [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țiunea | Metodă | URI |
---|---|---|
Preluați o anumită proprietate pentru o înregistrare | OBŢINE | [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 |
Exemplu răspuns
{
"@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 |
---|---|
OBŢINE | [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 |
---|---|
OBŢINE | [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 $filtru opțiunea de interogare de sistem pentru a seta criteriile pentru care sunt 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=venituri eq 100000 |
ne | Nu este egal cu | $filter=venituri ne 100000 |
gt | Mai mare decât | $filter=venituri gt 100000 |
ge | Mai mare sau egal cu | $filter=venituri ge 100000 |
lt | Mai mic decât | $filter=venituri lt 100000 |
le | Mai mic sau egal cu | $filter=revenue le 100000 |
Operatori logici | ||
AND | Logic și | $filter=venituri lt 100000 și venituri gt 2000 |
or | Logic sau | $filter=conține(nume,'(eșantion)') sau conține(nume,'test') |
Not | Negație logică | $filter=nu conține (nume, „eșantion”) |
Gruparea operatorilor | ||
( ) | Gruparea de prioritate | (conține(nume,'eșantion') sau conține (nume,'test')) și venituri 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(nume,'(eșantion)') |
endswith | $filter=endswith(nume,'Inc.') |
începe cu | $filter=startswith(nume,'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 |
---|---|
OBŢINE | [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 | conturi?$apply=groupby((cod de stare)) |
Suma agregată a valorii estimate | oportunități?$apply=aggregate(valoare estimată cu suma ca total) |
Dimensiunea medie a tranzacției pe baza valorii estimate și a statutului | oportunități?$apply=groupby((statcode),agregate(estimatedvalue cu media ca valoare medie) |
Suma valorii estimate în funcție de stare | oportunități?$apply=groupby((cod de stare),agregate(valoare estimată cu suma ca total)) |
Venitul total de oportunitate în funcție de numele contului | oportunități?$apply=groupby((parentaccountid/name),agregate(estimatedvalue with suma as total)) |
Nume de contact principal pentru conturile din „WA” | conturi?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname)) |
Ultima dată și oră de creare a unei înregistrări | conturi?$apply=aggregate(createdon cu max ca lastCreate) |
Prima dată și oră de creare a unei înregistrări | conturi?$apply=aggregate(createdon cu min ca 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 |
---|---|
OBŢINE | [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 |
Exemplu răspuns
{
"@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 |
---|---|
OBŢINE | [Portal URI/_api/accounts/$count Exemplu: https://contoso.powerappsportals.com/_api/accounts/$count |
Exemplu răspuns
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
Trebuie să utilizați Microsoft.Dynamics.CRM.associatednavigationproperty ca atribut de căutare atunci când utilizați $expand opțiunea de interogare.
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 |
Exemplu răspuns
{
"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, consultați Preluarea datelor 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) |
Exemplu răspuns
{
"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 returnează o matrice goală.
Metodă | URI |
---|---|
OBŢINE | [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. Trebuie să specificați numele relației de tabel în sintaxa codului dvs.
Metodă | URI |
---|---|
OBŢINE | [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) |
Interogați înregistrările folosind FetchXml
Transmiteți interogarea FetchXml ca valoare de șir codificată în URL colecției de seturi de entități folosind parametrul de interogare FetchXml.
De exemplu, pentru a prelua date din setul de entități de cont, compuneți o interogare FetchXml setând parametrul nume elementului de entitate în cont.
<fetch top='2'>
<entity name='account'>
<attribute name='name' />
</entity>
</fetch>
Șirul codificat în URL pentru interogarea anterioară este:
%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
Metodă | URI |
---|---|
OBŢINE | [Portal URI]/_api/accounts?fetchxml Exemplu: 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 |
Exemplu răspuns
{
"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)"
}
}
]
}
Următorul pas
Portalurile scrie, actualizează și șterge operațiuni folosind API-ul web