Partajați prin


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

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.

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

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)

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

Consultați și