Wykonywanie zapytań o dane przy użyciu interfejsu API sieci Web portali
W portalach można używać dostępnych operacji interfejsu Web API w Power Pages. Operacje interfejsu API sieci Web składają się z żądań i odpowiedzi HTTP. Ten artykuł zawiera przykładowe operacje odczytu, metody, identyfikator URI i przykładowy kod JSON, których można użyć w żądaniu HTTP.
Wymagania wstępne
Wersja witryny musi być 9.4.1.x lub wyższa.
Włącz tabelę i pole dla operacji interfejsu API sieci Web. Więcej informacji: Ustawienia witryny dla internetowego interfejsu API
Internetowy interfejs API portali uzyskuje dostęp do rekordów tabel i postępuje zgodnie z uprawnieniami do tabel przyznanymi użytkownikom za pośrednictwem skojarzonych ról internetowych. Upewnij się, że skonfigurowano poprawne uprawnienia do tabeli. Więcej informacji: Tworzenie ról internetowych
Uwaga
Odwołując się do tabel Dataverse za pomocą internetowego interfejsu API portali, musisz użyć EntitySetName, na przykład, aby uzyskać dostęp do tabeli konto, składnia kodu będzie używała nazwy EntitySetName z kont.
Zapytanie o rekordy
Poniższy przykład wysyła kwerendy do rekordów kont:
Operacja | Method | URI |
---|---|---|
Pobierz rekordy tabeli | GET | [Portal URI]/_api/accounts Przykład: https://contoso.powerappsportals.com/_api/accounts |
Przykładowa odpowiedź
{
"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"
}
]
}
Użyj kwerendy systemowej $select i $top, aby zwrócić właściwość nazwa dla pierwszych trzech kont:
Operacja | Method | URI |
---|---|---|
Pobieranie pierwszych trzech rekordów encji | GET | [Portal URI]/_api/accounts?$select=name,revenue&$top=3 Przykład: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Pobierz konto przy użyciu identyfikatora konta:
Operacja | Method | URI |
---|---|---|
Pobieranie określonej właściwości rekordu | GET | [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name Przykład: https://contoso.powerappsportals.com/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name |
Przykładowa odpowiedź
{
"@odata.etag": "W/\"1066414\"",
"name": "Adventure Works (sample)",
"accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}
Stosowanie opcji zapytań systemowych
Każda z opcji kwerendy systemowej dołączonej do adresu URL zestawu encji jest dodawana przy użyciu składni ciągów zapytania. Pierwszy jest dołączany po [?], a następujące opcje zapytania są oddzielane za pomocą [i]. We wszystkich opcjach zapytań rozróżniana jest wielkość liter, jak pokazano w poniższym przykładzie:
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3 Przykład: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3 |
Poproś o określone właściwości
Użyj opcji zapytania systemowego $select, aby ograniczyć zwracane właściwości, jak pokazano w poniższym przykładzie:
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$top=3 Przykład: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Ważne
To jest najlepsza praktyka wydajności. Jeśli nie określono właściwości, a wartość ustawienia witryny Webapi/<table name>/fields
została skonfigurowana na *
, wszystkie właściwości zostaną zwrócone za pomocą $select
. Jeśli nie określono żadnych właściwości, zostanie zwrócony błąd.
Filtruj wyniki
Użyj zapytania systemowego $filter, aby ustawić kryteria, dla których wiersze będą zwracane.
Standardowe operatory filtrów
Internetowy interfejs API obsługuje standardowe operatory filtrów OData wymienione w poniższej tabeli:
Operator | Opis | Przykład |
---|---|---|
Operatory porównania | ||
eq | Równa się | $filter=100000 eq przychodów |
ne | Nie równa się | $filter=100000 ne przychodów |
gt | Większe niż | $filter=100000 gt przychodów |
ge | Większe niż lub równe | $filter=100000 ge przychodów |
lt | Mniejsze niż | $filter=100000 it przychodów |
le | Mniejsze niż lub równe | $filter=100000 le przychodów |
Operatory logiczne | ||
and | Zestaw and | $filter=przychód lt 100000 i dochód gt 2000 |
or | Logiczne or | $filter=contains(name,'(sample)') or contains(name,'test') |
not | Logiczna negacja | $filter=not contains(name,'sample') |
Grupowanie operatorów | ||
( ) | Grupowanie pierwszeństwa | (contains(name,'sample') or contains(name,'test')) and revenue gt 5000 |
Standardowe funkcje zapytań
Internetowy interfejs API obsługuje następujące standardowe funkcje kwerendy ciągu OData:
Funkcja | Przykład |
---|---|
zawiera | $filter=contains(name,'(sample)') |
kończy się na | $filter=endswith(name,'Inc.') |
startswith | $filter=startswith(name,'a') |
Funkcje zapytań Dataverse
Interfejs API sieci Web obsługuje funkcje zapytań Dataverse w celu filtrowania wyników. Aby uzyskać więcej informacji, zobacz temat Odwołanie do funkcji zapytania internetowego interfejsu API.
Wyniki kolejności
Określ kolejność zwracania towarów za pomocą kwerendy systemowej $orderby. Użyj sufiksu asc lub desc, aby określić odpowiednio kolejność rosnącą lub malejącą. Wartość domyślna to rosnąco, jeśli sufiks nie zostanie zastosowany. Poniższy przykład pokazuje pobieranie nazwy i właściwości przychodów kont uporządkowanych według rosnących przychodów i malejących nazw.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000 Przykład: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000 |
Wyniki agregacji i grupowania
Korzystając z $apply, można dynamicznie agregować i grupować dane, jak widać w poniższych przykładach:
Scenariusze | Przykład |
---|---|
Lista unikalnych statusów w zapytaniu | accounts?$apply=groupby((statuscode)) |
Łączna suma wartości szacunkowej | opportunities?$apply=aggregate(estimatedvalue with sum as total) |
Średnia wielkość transakcji na podstawie szacunkowej wartości i statusu | opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue) |
Suma szacowanej wartości na podstawie statusu | opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with sum as total)) |
Łączne przychody z możliwości według nazwy konta | opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum as total)) |
Nazwy głównych kontaktów dla kont w „WA” | accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname)) |
Data i godzina ostatniego utworzenia nagrania | accounts?$apply=aggregate(createdon with max as lastCreate) |
Data i godzina pierwszego utworzenia nagrania | accounts?$apply=aggregate(createdon with min as firstCreate) |
Pobieranie liczby wierszy
Użyj zapytania systemowego $count o wartości true, aby uwzględnić liczbę encji spełniających kryteria filtrowania do 5 000.
Method | URI |
---|---|
GET | [Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true Przykład: https://contoso.powerappsportals.com/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true |
Przykładowa odpowiedź
{
"@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"
}
]
}
Jeśli nie chcesz zwracać żadnych danych z wyjątkiem licznika, możesz zastosować $count do dowolnej kolekcji, aby uzyskać tylko wartość.
Method | URI |
---|---|
GET | [Portal URI/_api/accounts/$count Przykład: https://contoso.powerappsportals.com/_api/accounts/$count |
Przykładowa odpowiedź
3
Porównanie kolumn
Poniższy przykład pokazuje, jak porównywać kolumny przy użyciu internetowego interfejsu API:
Method | URI |
---|---|
GET | [Portal URI]/_api/contacts?$select=firstname&$filter=firstname eq lastname Przykład: https://contoso.powerappsportals.com/_api/contacts?$select=firstname&$filter=firstname eq lastname |
Pobieranie powiązanych rekordów tabeli za pomocą kwerendy
Użyj zapytań systemowych $expand we właściwościach nawigacji, aby kontrolować, jakie dane z powiązanych encji są zwracane.
Wyszukaj powiązaną właściwość nawigacji
Musisz użyć Microsoft.Dynamics.CRM.associatednavigationproperty jako atrybutu wyszukiwania podczas korzystania z opcji zapytania $expand.
Aby określić Microsoft.Dynamics.CRM.associatednavigationproperty atrybutu, możesz wykonać następujące żądanie http GET dla kolumny przy użyciu następującej konwencji nazewnictwa: _name_value.
W poniższym przykładzie możemy określić powiązaną właściwość nawigacji kolumny Kontakt podstawowy tabeli Konto przez określenie nazwy kolumny primarycontactid przez sformatowanie nazwy w żądaniu: _primarycontactid_value.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=_primarycontactid_value Przykład https://contoso.powerappsportals.com/_api/accounts?$select=_primarycontactid_value |
Przykładowa odpowiedź
{
"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"
}
]
}
Z odpowiedzi wynika, że skojarzona właściwość nawigacji to primarycontactid. Skojarzona właściwość nawigacji może być nazwą logiczną lub nazwą schematu kolumny wyszukiwania w zależności od sposobu tworzenia tabeli.
Aby uzyskać więcej informacji, zobacz temat Pobieranie danych dotyczących właściwości wyszukiwania.
Pobieranie powiązanych rekordów tabeli przez rozwinięcie jednowartościowych właściwości nawigacji
Poniższy przykład pokazuje, jak pobrać kontakt dla wszystkich rekordów konta. W przypadku powiązanych rekordów kontaktów pobieramy tylko identyfikator contactid i fullname.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) Przykład: https://contoso.powerappsportals.com/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) |
Przykładowa odpowiedź
{
"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)"
}
}
]
}
Pobierz powiązane tabele, rozwijając właściwości nawigacji o wartościach kolekcji
Jeśli rozwiniesz parametry nawigacji o wartościach kolekcji, aby pobrać powiązane tabele dla zestawów jednostek, zostanie zwrócony tylko jeden poziom głębokości, jeśli istnieją dane. W przeciwnym razie kolekcja zwróci pustą tablicę.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart) Przykład: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart) |
Pobierz powiązane tabele, rozwijając właściwości nawigacji o wartości pojedynczej i kolekcji
Poniższy przykład ilustruje sposób rozwijania powiązanych encji dla zestawów encji przy użyciu zarówno właściwości nawigacji pojedynczej, jak i o wartości kolekcji. Nazwę relacji między tabelami należy określić w składni kodu.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart) Przykład: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart) |
Zapytania o rekordy przy użyciu FetchXml
Przekaż zapytanie FetchXml jako wartość ciągu zakodowaną w adresie URL do kolekcji zestawu jednostek przy użyciu parametru zapytania FetchXml.
Na przykład, aby pobrać dane z zestawu podmiotów konta, utwórz zapytanie FetchXml ustawiające parametr entity element name na account.
<fetch top='2'>
<entity name='account'>
<attribute name='name' />
</entity>
</fetch>
Ciąg zakodowany w adresie URL dla poprzedniego zapytania to:
%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 Przykład: 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 |
Przykładowa odpowiedź
{
"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)"
}
}
]
}
Następny krok
Portale zapisują, aktualizują i usuwają operacje za pomocą Web API