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 | 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 tabellrelationsnamnet i syntaxen för koden.
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) |
Fråga poster med FetchXml
Skicka FetchXml-frågan som ett URL-kodat strängvärde till entitetsuppsättningssamlingen med hjälp av frågeparametern FetchXml.
Om du till exempel vill hämta data från kontoentitetsuppsättningen, skapar du en FetchXml-fråga som anger parametern för entitetselementnamn till kontot.
<fetch top='2'>
<entity name='account'>
<attribute name='name' />
</entity>
</fetch>
Den URL-kodade strängen för föregående fråga är:
%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 |
---|---|
HÄMTA | [Portal URI]/_api/accounts?fetchxml Exempel: 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 |
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)"
}
}
]
}
Nästa steg
Portaler skriver, uppdaterar och tar bort åtgärder med hjälp av webb-API