Share via


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).