Dela via


Frågedata med webb-API för portaler

Anteckning

Från och med den 12 oktober 2022 byter Power Apps-portaler namn till Power Pages. Mer information: Microsoft Power Pages är nu allmänt tillgänglig (blogg)
Vi kommer snart migrera och sammanfoga dokumentationen för Power Apps-portaler med Power Pages-dokumentationen.

Du kan använda tillgängliga webb-API-åtgärder i portaler. Webb-API-åtgärder består av HTTP-begäranden och svar. Den här artikeln innehåller exempel på läsåtgärder, metoder, URI och exempel på JSON som du kan använda i HTTP-begäran.

Förutsättningar

  • Portalversionen måste vara 9.4.1.x eller högre.

  • Aktivera tabell och fält för webb-API-åtgärder. Mer information: Webbplatsinställningar för webb-API

  • Portalers webb-API ger åtkomst till tabellposter och följer tabellbehörigheterna som ges till användare via de associerade webbrollerna. Se till att du konfigurerar rätt tabellbehörigheter. Mer information: Skapa webbroller

Anteckning

När du refererar Dataverse tabeller med portalerna webb-API, måste du använda EntitySetName till exempel för åtkomst till tabellen konto kodens syntax använder EntitySetName för konton.

Frågeposter

Följande exempel ger frågor om kontoposter:

Åtgärd Method URI
Hämta tabellposter HÄMTA [Portal URI]/_api/accounts

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

Exempelsvar

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

Använd alternativen $select och $top för att få namnegenskapen för de första tre kontona:

Åtgärd Method URI
Hämta de första tre entitetsposterna HÄMTA [Portal URI]/_api/accounts?$select=name,revenue&$top=3

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

Hämta konto med hjälp av konto-ID:

Åtgärd Method URI
Hämta specifik egenskap för en post HÄMTA [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

Exempel:
https://contoso.powerappsportals.com/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

Exempelsvar

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

Använda systemfrågealternativ

Alla systemfrågealternativ som du lägger till i URL-adressen för entitetsuppsättningen läggs till med syntaxen för frågesträngar. Det första läggs till efter [?] och följande frågealternativ avgränsas med hjälp av [&]. Alla frågealternativ är skiftlägeskänsliga enligt exemplet nedan:

Method URI
HÄMTA [Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3

Exempel:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3

Begäransspecifika egenskaper

Använd alternativet  $select  för att begränsa de egenskaper som returneras som i följande exempel:

Method URI
HÄMTA [Portal URI]/_api/accounts?$select=name,revenue&$top=3

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

Viktigt

Det här är bästa praxis för prestanda. Om inga egenskaper har angetts och du har konfigurerat Webapi/<table name>/fields-webbplatsinställningens värde till * returneras alla egenskaper med hjälp av $select. Om inga egenskaper anges returneras ett fel.

Filtrera resultat

Använd alternativet  $filter  för att ange villkor för vilka rader som ska returneras.

Standardfilteroperatörer

Webb-API stöder standardoperatörerna för OData-filter som visas i följande tabell:

Operatör Beskrivning Exempel
Jämförelseoperatörer
eq Lika med $filter= intäkter är 100 000
ne Inte lika med $filter= intäkter är inte 100 000
gt Större än $filter= intäkter större än 100 000
ge Större än eller lika med $filter= intäkter större än eller lika med 100 000
lt Mindre än $filter= intäkter mindre än 100 000
le Mindre än eller lika med $filter= intäkter mindre än eller lika med 100 000
Logiska operatörer
and Logisk och $filter=omsättning mindre än 100 000 och omsättning större än 2 000
or Logiskt eller $filter=contains(name,'(sample)') eller contains(name,'test')
not Logisk negation $filter=not contains(name,'sample')
Gruppera operatörer
( ) Gruppering av prioritet (contains(name,'sample') eller contains(name,'test')) och intäkt större än 5 000

Standardfrågefunktioner

Webb-API stöder följande standardfunktioner för OData-strängfrågor:

Funktion Exempel
innehåller $filter=contains(name,'(sample)')
endswith $filter=endswith(name,'Inc.')
startswith $filter=startswith(name,'a')

Dataverse frågefunktioner

Webb-API stöder frågefunktioner Dataverse för att filtrera resultat. För mer information, se Webb-API funktionsreferens för fråga.

Ordna resultat

Ange i vilken ordning objekt ska returneras med hjälp av alternativet  $orderby . Använd suffixet asc eller desc för att specificera stigande eller fallande ordning. Standard är stigande om suffixet inte används. I följande exempel visas hur du hämtar namn och intäktsegenskaper för konton som har ordnats genom stigande omsättning och genom att fallande namn.

Method URI
HÄMTA [Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000

Exempel:
https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000

Sammanställ och gruppera resultat

Genom att använda  $apply,  kan du sammanställa och gruppera dina data dynamiskt enligt följande exempel:

Scenarion Exempel
Lista över unika statusar i frågan accounts?$apply=groupby((statuscode))
Totalsumma för det uppskattade värdet opportunities?$apply=aggregate(estimatedvalue with sum as total)
Affärens genomsnittsstorlek utifrån beräknat värde och status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue)
Summan av beräknat värde utifrån status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with sum as total))
Total affärsmöjlighetsintäkt efter kontonamn opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum as total))
Primära kontaktpersonsnamn för konton i WA accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname))
Datum och tid för senast skapade post accounts?$apply=aggregate(createdon with max as lastCreate)
Datum och tid för först skapade post accounts?$apply=aggregate(createdon with min as firstCreate)

Hämta antalet rader

Använd alternativet  $count med ett värde av Sant för att inkludera antalet entiteter som matchar filtreringskriterierna upp till 5 000.

Method URI
HÄMTA [Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true

Exempel:
https://contoso.powerappsportals.com/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true

Exempelsvar

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

Om du inte vill returnera några data förutom antalet kan du tillämpa  $count på valfri samling för att endast få värdet.

Method URI
HÄMTA [Portal URI/_api/accounts/$count

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

Exempelsvar

3

Kolumnjämförelse

Följande exempel visar hur du jämför kolumner med hjälp av webb-API:

Method URI
GET [Portal URI]/_api/contacts?$select=firstname&$filter=firstname eq lastname

Exempel:
https://contoso.powerappsportals.com/_api/contacts?$select=firstname&$filter=firstname eq lastname

Hämta relaterade tabellposter med en fråga

Använd alternativet  $expand i navigeringsegenskaperna för att kontrollera vilka data från relaterade entiteter som returneras.

Uppslag för associering av egenskap

Du måste använda Microsoft.Dynamics.CRM.associatednavigationproperty som uppslagsattribut när du använder frågealternativet $expand.

Om du vill fastställa Microsoft.Dynamics.CRM.associatednavigationproperty för ett attribut kan du göra följande http GET-begäran för kolumnen med hjälp av följande namnkonvention: _name_value.

I följande exempel kan vi fastställa den associerade navigeringsegenskapen för kolumnen Primär kontakt i tabellen Konto genom att ange kolumnnamnet primarycontactid genom att formatera namnet i förfrågan: _primarycontactid_value.

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

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

Exempelsvar

{
"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 från svaret att den associerade navigeringsegenskapen är primarycontactid. Den associerade navigeringsegenskapen kan vara uppslagskolumnens logiska namn eller schemanamn beroende på hur tabellen skapades.

Mer information finns i Hämta data om uppslagsegenskaper.

Hämta relaterade tabellposter genom att expandera enkelvärderade navigeringsegenskaper

Följande exempel visar hur du hämtar kontakten för alla kontoposter. För de relaterade kontaktposterna hämtar vi bara contactid och fullname.

Method URI
GET [Portal URI]/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname)

Exempel:
https://contoso.powerappsportals.com/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname)

Exempelsvar

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

Hämta relaterade tabeller genom att expandera samlingsvärderade navigeringsegenskaper

Om du expanderar parametrar för samlingsvärderad navigering för att hämta relaterade tabeller för entitetsuppsättningar, returernas endast en djupnivå om det finns data. Annars returneras en tom matris för samlingen.

Method URI
HÄMTA [Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)

Exempel:
https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)

Hämta relaterade tabeller genom att expandera både enkelvärderade och samlingsvärderade navigeringsegenskaper

Följande exempel visar hur du kan expandera relaterade entiteter för entitetsuppsättningar med hjälp av både enkel- och samlingsvärderade navigeringsegenskaper. Du måste ange tabellrelationens namn i kodens syntax.

Method URI
HÄMTA [Portal URI]/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)

Exempel:
https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)

Nästa steg

Portaler skriver, uppdaterar och tar bort åtgärder med hjälp av webb-API

Se även

Översikt över webb-API-portaler
Självstudier: Använda webb-API:et med portaler
Konfigurera kolumnbehörigheter

Anteckning

Kan du berätta om dina inställningar för dokumentationsspråk? Svara i en kort undersökning. (observera att undersökningen är på engelska)

Undersökningen tar ungefär sju minuter. Inga personuppgifter samlas in (sekretesspolicy).