Wykonywanie zapytań o dane przy użyciu interfejsu API sieci Web portali

Uwaga

12 października 2022 r. funkcja Portale usługi Power Apps została przekształcona w usługę Power Pages. Więcej informacji: Usługa Microsoft Power Pages jest teraz ogólnie dostępna (blog)
Wkrótce zmigrujemy i scalimy dokumentację funkcji Portale usługi Power Apps z dokumentacją usługi Power Pages.

W portalach można używać dostępnych operacji interfejsu Web API. 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 portalu 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 Identyfikator 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 Identyfikator 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 Identyfikator 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ą [&]. We wszystkich opcjach zapytań rozróżniana jest wielkość liter, jak pokazano w poniższym przykładzie:

Method Identyfikator 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 w celu ograniczenia zwracanych właściwości, jak pokazano w poniższym przykładzie:

Method Identyfikator 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 w celu ustawienia kryteriów, 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 elementów za pomocą opcji zapytania systemowego $orderby . Użyj sufiksu asc lub desc w celu określenia odpowiednio kolejności rosnącej lub malejącej. 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 Identyfikator 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 opcji zapytania systemowego $count o wartości true, aby uwzględnić liczbę encji spełniających kryteria filtrowania do 5000.

Method Identyfikator 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 Identyfikator 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 Identyfikator 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 opcji zapytania systemowego $expand we właściwościach nawigacji, aby kontrolować, jakie dane z powiązanych encji są zwracane.

Wyszukaj powiązaną właściwość nawigacji

W przypadku korzystania z opcji zapytania $expand jako atrybutu wyszukiwania należy użyć Microsoft.Dynamics.CRM.associatednavigationproperty.

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 Identyfikator 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 Identyfikator 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 Identyfikator 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. W składni kodu należy podać nazwę relacji między tabelami.

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

Następny krok

Portale zapisują, aktualizują i usuwają operacje za pomocą Web API

Zobacz też

Opis internetowego interfejsu API portali
Samouczek: Używanie internetowego interfejsu API portali
Konfiguruj uprawnienia kolumn

Uwaga

Czy możesz poinformować nas o preferencjach dotyczących języka dokumentacji? Wypełnij krótką ankietę. (zauważ, że ta ankieta jest po angielsku)

Ankieta zajmie około siedmiu minut. Nie są zbierane żadne dane osobowe (oświadczenie o ochronie prywatności).