Del via


Spørre etter data ved hjelp av web-API for portaler

Du kan bruke tilgjengelige web-API-operasjoner i Power Pages. Web API-operasjoner består av HTTP-forespørsler og -svar. Denne artikkelen inneholder eksempel på leseoperasjoner, metoder, URI og eksempel-JSON du kan bruke i HTTP-forespørselen.

Forutsetning

  • Nettstedsversjonen må være 9.4.1.x eller nyere.

  • Aktivere tabell og felt for web-API-operasjoner. Mer informasjon: Områdeinnstillinger for web-APIen

  • Web-API for portaler får tilgang til tabellposter og følger tabelltillatelsene som gis til brukere via den tilknyttede webroller. Kontroller at du har konfigurert de riktige tabelltillatelsene. Mer informasjon: Opprette webroller

Merk

Når du refererer til Dataverse-tabeller ved å bruke web-API-en for portaler, må du for eksempel bruke EntitySetName til å få tilgang til account-tabellen, og kodesyntaksen vil bruke accounts under EntitySetName.

Spørre etter oppføringer

I følgende eksempel spørres det etter forretningsforbindelsesoppføringer:

Operasjon Method URI
Hente tabelloppføringer GET [Portal URI]/_api/accounts

Eksempel:
https://contoso.powerappsportals.com/_api/accounts

Eksempelsvar

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

Bruk $select- og $top- systemspørringsalternativer til å returnere navneegenskapen for de tre første forretningsforbindelsene:

Operasjon Method URI
Hente de tre første enhetsoppføringene GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

Eksempel:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3

Hent forretningsforbindelse ved hjelp av forretningsforbindelses-ID:

Operasjon Method URI
Hente bestemt egenskap for en oppføring 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

Eksempelsvar

{
    "@odata.etag": "W/\"1066414\"",
    "name": "Adventure Works (sample)",
    "accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}

Bruke alternativer for systemspørring

Hvert av systemspørringsalternativene du tilføyer i URL-adressen for enhetssettet, legges til ved hjelp av syntaksen for spørringsstrenger. Den første legges til etter [?], og følgende spørringsalternativer er separert ved hjelp av [&]. Det skiller mellom små og store bokstaver i alle spørringsalternativer, 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

Forespørre spesifikke egenskaper

Bruk $select-systemspørringsalternativet til å begrense egenskapene som 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

Viktig

Dette er gode fremgangsmåter for ytelse. Hvis egenskaper ikke er angitt, og du har konfigurert Webapi/<table name>/fields-verdien for områdeinnstillingen til *, returneres alle egenskapene ved hjelp av $select. Hvis det ikke er angitt noen egenskaper, returneres en feil.

Filtrere resultater

Bruk $filter-systemspørringsalternativet til å angi vilkår for hvilke rader som skal returneres.

Standard filteroperatorer

Web-API-en støtter standard OData-filteroperatorer som vises i følgende tabell:

Operatør Beskrivelse Eksempel
Sammenligningsoperatorer
eq Lik $filter=revenue eq 100000
ne Ikke lik $filter=revenue ne 100000
gt Større enn $filter=revenue gt 100000
ge Større enn eller lik $filter=revenue ge 100000
lt Mindre enn $filter=revenue lt 100000
le Mindre enn eller lik $filter=revenue le 100000
Logiske operatorer
and Logisk and $filter=revenue lt 100000 and revenue gt 2000
or Logisk or $filter=contains(name,'(sample)') or contains(name,'test')
not Logisk nektelse $filter=not contains(name,'sample')
Grupperingsoperatorer
( ) Prioritetsgruppering (contains(name,'sample') or contains(name,'test')) and revenue gt 5000

Standard spørringsfunksjoner

Web-API-en støtter disse standard OData-strengspørringsfunksjonene:

Funksjon Eksempel
Inneholder $filter=contains(name,'(sample)')
slutter med $filter=endswith(name,'Inc.')
startswith $filter=startswith(name,'a')

Dataverse spørringsfunksjoner

Web-API-en støtter Dataverse-spørringsfunksjoner for å filtrere resultater. Hvis du vil ha mer informasjon, kan du se Referanse for web-API-spørringsfunksjon.

Rekkefølgeresultater

Angi rekkefølgen elementer returneres i, ved hjelp av $orderby-alternativet for systemspørring. Bruk asc- eller desc-suffikset til å angi stigende eller synkende rekkefølge. Standardverdien er stigende hvis suffikset ikke brukes. Eksemplet nedenfor viser hvordan du henter navn- og omsetningsegenskapene for forretningsforbindelser ordnet etter stigende omsetning og synkende 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 å bruke $apply kan du aggregere og gruppere dataene dynamisk, som du kan se i følgende eksempler:

Scenarioer Eksempel
Liste over unike statuser i spørringen accounts?$apply=groupby((statuscode))
Aggregere summen av den beregnede verdien opportunities?$apply=aggregate(estimatedvalue with sum as total)
Gjennomsnittlig størrelse på avtalen basert på beregnet verdi og status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue)
Summen av beregnet verdi basert på status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with sum as total))
Total omsetning for salgsmulighet etter navn på forretningsforbindelse opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum as total))
Hovedkontaktnavn for forretningsforbindelser i WA accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname))
Dato og klokkeslett for sist opprettede oppføring accounts?$apply=aggregate(createdon with max as lastCreate)
Dato og klokkeslett for først opprettede oppføring accounts?$apply=aggregate(createdon with min as firstCreate)

Hente et antall rader

Bruk alternativet $count-systemspørringen med verdien sann for å inkludere antall enheter som samsvarer med filtervilkårene på opptil 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

Eksempelsvar

{
"@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 bortsett fra antallet, kan du bruke $count i en samling for å hente bare verdien.

Method URI
GET [Portal URI/_api/accounts/$count

Eksempel:
https://contoso.powerappsportals.com/_api/accounts/$count

Eksempelsvar

3

Sammenligning av kolonner

Følgende eksempel viser hvordan du sammenligner kolonner ved hjelp av web-API:

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

Bruk alternativet $expand-systemspørring i navigasjonsegenskapene til å styre hvilke data fra relaterte enheter som returneres.

Oppslag av tilknyttet navigasjonsegenskap

Du må bruke Microsoft.Dynamics.CRM.associatednavigationproperty som oppslagsattributt når du bruker spørringsalternativet $expand.

Hvis du vil finne ut Microsoft.Dynamics.CRM.associatednavigationproperty til et attributt, kan du utføre følgende http GET-forespørsel for kolonnen ved å bruke følgende navnekonvensjon: _navn_verdi.

I følgende eksempel kan vi fastsette den tilknyttede navigasjonsegenskapen for kolonnen Primær kontaktperson i tabellen Forretningsforbindelse ved å angi kolonnenavnet primarycontactid ved å formatere navnet i forespørselen: _primarycontactid_value.

Method URI
GET [Portal URI]/_api/accounts?$select=_primarycontactid_value

Eksempel
https://contoso.powerappsportals.com/_api/accounts?$select=_primarycontactid_value

Eksempelsvar

{
"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 ser fra svaret at den tilknyttede navigasjonsegenskapen er primarycontactid. Den tilknyttede navigasjonsegenskapen kan enten være oppslagskolonnens logiske navn eller skjemanavn, avhengig av hvordan tabellen ble opprettet.

Hvis du vil ha mer informasjon, kan du se Hente data om oppslagsegenskaper.

Eksemplet nedenfor viser hvordan du henter kontakten for alle forretningsforbindelsesoppføringene. For de relaterte kontaktoppføringene henter vi bare contactid og fullname.

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

Eksempelsvar

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

Hvis du utvider navigasjonsparametere med samlingsverdi for å hente relaterte tabeller for enhetssett, returneres bare ett dybdenivå hvis det finnes data. Hvis ikke returnerer samlingen en tom matrise.

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)

Eksemplet nedenfor viser hvordan du kan utvide relaterte enheter for enhetssett med navigasjonsegenskaper både for enkeltverdi og samlingsverdi. Du må angi tabellrelasjonsnavnet i syntaksen for koden.

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

Spør oppføringer ved hjelp av FetchXML

Send FetchXML-spørringen som en URL-kodet strengverdi til samlingen av enhetssett ved hjelp av spørringsparameteren FetchXML.

Hvis du for eksempel vil hente data fra enhetssettet for forretningsforbindelse, skriver du en FetchXml-spørring som angir forretningsforbindelsen for parameteren enhetselementnavn.

<fetch top='2'>
  <entity name='account'>
      <attribute name='name' />
  </entity>
</fetch>

Den URL-kodede strengen for den forrige spørringen er:

%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
Method URI
GET [Portal URI]/_api/accounts?fetchxml

Eksempel:
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

Eksempelsvar

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

Neste trinn

Skrive-, oppdaterings- og sletteoperasjoner for portaler ved hjelp av nett-API-en

Se også