Dela via


Frågedata med webb-API för portaler

Du kan använda tillgängliga webb-API-åtgärder i Power Pages. 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

  • Webbplatsversionen 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

Kommentar

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 GET [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 GET [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 GET [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
GET [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
GET [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=revenue eq 100000
ne Inte lika med $filter=revenue ne 100000
gt Större än $filter=revenue gt 100000
ge Större än eller lika med $filter=revenue ge 100000
lt Mindre än $filter=revenue lt 100000
le Mindre än eller lika med $filter=revenue le 100000
Logiska operatörer
and Logisk och $filter=revenue lt 100000 och intäkter gt 2000
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äkter gt 5000

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
GET [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 med summa som total)
Affärens genomsnittsstorlek utifrån beräknat värde och status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue med medelvärde som averagevalue)
Summan av beräknat värde utifrån status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue med summa som total))
Total affärsmöjlighetsintäkt efter kontonamn opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue med summa som 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
GET [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
GET [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

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.

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

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
GET [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)

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
GET [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