Forespørgsel efter data ved hjælp af portaler Web API
Bemærk
Fra 12. oktober 2022 bliver Power Apps-portaler til Power Pages. Flere oplysninger: Microsoft Power Pages er nu generelt tilgængelig (blog)
Vi overfører og fletter snart dokumentationen til Power Apps-portalerne med Power Pages-dokumentationen.
Du kan bruge tilgængelige web-API-handlinger på portaler. Web-API-handlinger består af HTTP-anmodninger og -svar. Denne artikel indeholder eksempler på læsehandlinger, metoder, URI'er og det JSON-eksempel, du kan bruge i HTTP-anmodningen.
Forudsætninger
Din portalversion skal være 9.4.1.x eller nyere.
Aktiver tabel og felt for web-API-handlinger. Flere oplysninger: Indstillinger for websted for web-API'en
Portalerne Web API giver adgang til tabelposter og følger de tabeltilladelser, der gives til brugere via de tilknyttede webroller. Sørg for at konfigurere de rette tabeltilladelser. Flere oplysninger: Oprette webroller
Bemærk
Når du refererer til Dataverse-tabeller ved hjælp af portal-Web-API'en, skal du f.eks. bruge EntitySetName til at få adgang til account-tabellen. Kodesyntaksen bruger EntitySetName accounts.
Forespørge på poster
Følgende eksempel forespørger om firmaposter:
Handling | Method | URI |
---|---|---|
Hente tabelposter | GET | [Portal URI]/_api/accounts Eksempel: https://contoso.powerappsportals.com/_api/accounts |
Prøvesvar
{
"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"
}
]
}
Brug $select og $top til at returnere navneegenskaben for de første tre firmaer:
Handling | Method | URI |
---|---|---|
Hente de første tre objektposter | GET | [Portal URI]/_api/accounts?$select=name,revenue&$top=3 Eksempel: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Hent firma ved hjælp af firma-id:
Handling | Method | URI |
---|---|---|
Hente en bestemt egenskab for en post | GET | [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name Eksempel: https://contoso.powerappsportals.com/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name |
Prøvesvar
{
"@odata.etag": "W/\"1066414\"",
"name": "Adventure Works (sample)",
"accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}
Anvende indstillinger for systemforespørgsel
De systemforespørgselsindstillinger, du føjer til URL-adressen for det objektsæt, tilføjes ved hjælp af syntaksen for forespørgselsstrenge. Den første tilføjes efter [?], og følgende forespørgselsindstillinger er adskilt ved hjælp af [&]. I alle forespørgselsindstillinger kan der bruges store og små bogstaver som vist i følgende eksempel:
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3 Eksempel: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3 |
Anmod om specifikke egenskaber
Brug indstillingen $select -systemforespørgsel til at begrænse de egenskaber, der returneres som vist i følgende eksempel:
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$top=3 Eksempel: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Vigtigt
Dette er bedste praksis for ydeevne Hvis der ikke er angivet egenskaber, og du har konfigureret Webapi/<table name>/fields
-værdien for indstillingen for websted til *
, returneres alle egenskaber ved hjælp af $select
. Hvis der ikke angives nogen egenskaber, returneres der en fejl.
Filtrer resultater
Brug indstillingen $filter -systemforespørgsel til at angive kriterier for, hvilke rækker der returneres.
Standardfilteroperatører
Web-API'en understøtter de OData-standardfilteroperatører, der er angivet i følgende tabel:
Operatør | Beskrivelse | Eksempel |
---|---|---|
Sammenligningsoperatorer | ||
eq | Lig med | $filter=indtægtskilde eq 100000 |
ne | Ikke lig med | $filter=indtægtskilde ne 100000 |
gt | Større end | $filter=indtægtskilde gt 100000 |
ge | Større end eller lig med | $filter=indtægtskilde ge 100000 |
lt | Mindre end | $filter=indtægtskilde lt 100000 |
le | Mindre end eller lig med | $filter=indtægtskilde le 100000 |
Logiske operatorer | ||
and | Logisk AND | $filter=omsætning lt100000 og omsætning gt 2000 |
or | Logisk OR | $filter=indeholder(navn,'(sample)') eller indeholder(navn,'test') |
not | Logisk negation | $filter=ikke indeholder(navn,'sample') |
Gruppering af operatorer | ||
( ) | Gruppering af prioritet | (indeholder(navn,'sample') eller indeholder(navn,'test')) og omsætning gt 5000 |
Standardforespørgselsfunktioner
Web-API'en understøtter disse standardfunktioner til OData-strengforespørgsel:
Funktion | Eksempel |
---|---|
indeholder | $filter=ikke indeholder(navn,'(sample)') |
endswith | $filter=endswith(name,'Inc.') |
startswith | $filter=startswith(name,'a') |
Dataverse-forespørgselsfunktioner
Web-API'en understøtter Dataverse-forespørgselsfunktioner til filtrering af resultater. Du kan finde flere oplysninger i Web API Query Function Reference.
Ordreresultater
Angiv den rækkefølge, elementer returneres i, ved hjælp af indstillingen $orderby systemforespørgsel. Brug asc - eller desc -suffiks til at angive henholdsvis stigende eller faldende rækkefølge. Standardværdien er stigende, hvis suffikset ikke anvendes. I følgende eksempel kan du se, hvordan du henter navn og indtægtsegenskaber for firmaer, der er sorteret efter stigende omsætning og faldende navn.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000 Eksempel: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000 |
Aggregere og gruppere resultater
Ved hjælp $apply kan du aggregere og gruppere dataene dynamisk, som det kan ses i følgende eksempler:
Scenarier | Eksempel |
---|---|
Liste over entydige statusser i forespørgslen | firmaer?$apply=groupby((statuscode)) |
Samlet sum af den anslåede værdi | salgsmuligheder?$apply=aggregate(anslået værdi med sum som total) |
Den gennemsnitlige størrelse på handlen baseret på anslået værdi og status | salgsmuligheder?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue) |
Sum af anslået værdi baseret på status | salgsmuligheder?$apply=groupby((statuscode),aggregate(estimatedvalue with sum som total)) |
Samlet omsætning for salgsmulighed efter firmanavn | salgsmuligheder?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum som total)) |
Navne på primære kontaktpersoner for firmaer i 'WA' | firmaer?$apply=filter(address1_stateorprovincestilstand 'WA')/groupby((primarycontactid/fullname)) |
Sidst oprettet dato og klokkeslæt for post | firmaer?$apply=aggregate(createdon med maks. som lastCreate) |
Først oprettet dato og klokkeslæt for post | firmaer?$apply=aggregate(createdon med min. som firstCreate) |
Hente en optælling af rækker
Brug indstillingen $count systemforespørgsel med værdien true til at medtage en optælling af objekter, der opfylder filterkriterierne op til 5.000.
Method | URI |
---|---|
GET | [Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true Eksempel: https://contoso.powerappsportals.com/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true |
Prøvesvar
{
"@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"
}
]
}
Hvis du ikke vil returnere data med undtagelse af antallet, kan du anvende $count på en hvilken som helst samling for kun at få værdien.
Method | URI |
---|---|
GET | [Portal URI/_api/accounts/$count Eksempel: https://contoso.powerappsportals.com/_api/accounts/$count |
Prøvesvar
3
Sammenligning af kolonner
I følgende eksempel kan du se, hvordan du kan sammenligne kolonner ved hjælp af web-API'en:
Method | URI |
---|---|
GET | [Portal URI]/_api/contacts?$select=firstname&$filter=firstname eq lastname Eksempel: https://contoso.powerappsportals.com/_api/contacts?$select=firstname&$filter=firstname eq lastname |
Hente relaterede tabelposter med en forespørgsel
Brug indstillingen $expand -systemforespørgsel i navigationsegenskaberne for at styre, hvilke data fra relaterede objekter der returneres.
Opslagstilknyttet navigationsegenskab
Du skal bruge Microsoft.Dynamics.CRM.associatednavigationproperty som opslagsattribut, når du bruger parameteren $expand i forespørgsel.
Hvis du vil fastslå Microsoft.Dynamics.CRM.associatednavigationproperty for en attribut, kan du oprette følgende http GET-forespørgsel for kolonnen ved hjælp af følgende navngivningskonvention: _navn_værdi.
I følgende eksempel kan du fastslå den tilknyttede navigationsegenskab for kolonnen Primær kontaktperson i tabellen Firma ved at angive kolonnenavnet primarycontactid ved at formatere navnet i anmodningen: _primarycontactid_value.
Metode | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=_primarycontactid_value Eksempel https://contoso.powerappsportals.com/_api/accounts?$select=_primarycontactid_value |
Prøvesvar
{
"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"
}
]
}
Vi kan se ud fra svaret, at den tilknyttede navigationsegenskab er primarycontactid. Den tilknyttede navigationsegenskab kan enten være opslagskolonnens logiske navn eller skemanavn, afhængigt af hvordan tabellen blev oprettet.
Du kan finde flere oplysninger under Hente data om opslagsegenskaber.
Hente relaterede tabelposter ved at udvide navigationsegenskaber med en enkelt værdi
I følgende eksempel vises, hvordan du kan hente kontakten for alle firmaposterne. I forbindelse med relaterede kontaktposter henter vi kun kontakt-id og fulde navn.
Metode | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) Eksempel: https://contoso.powerappsportals.com/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) |
Prøvesvar
{
"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)"
}
}
]
}
Hente relaterede tabeller ved at udvide navigationsegenskaber med samlingsværdier
Hvis du udvider navigationsparametrene for samlingsværdier for at hente relaterede tabeller for objektsæt, returneres der kun ét niveau med dybden, hvis der findes data. Ellers returnerer samlingen en tom matrix.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart) Eksempel: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart) |
Hente relaterede tabeller ved at udvide navigationsegenskaber med både enkeltværdier og samlingsværdier
I følgende eksempel vises, hvordan du kan udvide relaterede objekter for objektsæt ved hjælp af både navigationsegenskaber og navigationsegenskaber med samlingsværdi. Du skal angive navnet på tabelrelationen i syntaksen for koden.
Metode | URI |
---|---|
GET | [Portal URI]/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart) Eksempel: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart) |
Næste trin
Portalhandlingerne skrive, opdatere og slette bruger web-API
Se også
Oversigt over Web-API til portaler
Selvstudium: Bruge Web API-portal
Konfigurere kolonnetilladelser
Bemærk
Kan du fortælle os om dine sprogpræferencer for dokumentation? Tag en kort undersøgelse. (bemærk, at denne undersøgelse er på engelsk)
Undersøgelsen tager ca. syv minutter. Der indsamles ingen personlige data (erklæring om beskyttelse af personlige oplysninger).