Kongsi melalui


Pertanyaan data menggunakan API Web portal

Anda boleh menggunakan operasi API Web tersedia dalam Power Pages. Operasi API Web terdiri daripada permintaan dan respons HTTP. Artikel ini menyediakan sampel operasi baca, kaedah, URI dan JSON sampel yang boleh anda gunakan dalam permintaan HTTP.

Prasyarat

  • Versi tapak web anda mestilah 9.4.1.x atau lebih tinggi.

  • Dayakan jadual dan medan untuk operasi API Web. Maklumat lanjut, Tetapan tapak untuk API Web

  • API Web portal mengakses jadual rekod mengikut keizinan jadual yang diberikan kepada pengguna melalui yang berkaitan peranan web. Pastikan anda mengkonfigurasi keizinan jadual yang betul. Maklumat lanjut: Cipta peranan web

Nota

Apabila merujuk kepada jadual Dataverse menggunakan API Web portal, anda perlu menggunakan EntitySetName, sebagai contoh, untuk mengakses jadual akaun, sintaks kod akan menggunakan EntitySetName akaun.

Rekod pertanyaan

Berikut ialah contoh pertanyaan rekod akaun:

Operasi Kaedah URI
Dapatkan rekod jadual GET [Portal URI]/_api/accounts

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

Respons sampel

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

Gunakan $select dan $top pertanyaan sistem untuk mengembalikan nama sifat untuk tiga akaun pertama:

Operasi Kaedah URI
Dapatkan semula tiga rekod entiti pertama GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

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

Dapatkan semula akaun menggunakan ID akaun:

Operasi Kaedah URI
Dapatkan semula sifat khusus untuk rekod GET [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

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

Respons sampel

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

Gunakan pilihan pertanyaan sistem

Setiap pilihan pertanyaan sistem anda ditambah ke URL untuk set entiti ditambah menggunakan sintaks untuk rentetan pertanyaan. Yang pertama dilampirkan selepas [?] dan pilihan pertanyaan berikut dipisahkan menggunakan [&]. Semua pilihan pertanyaan adalah sensitif huruf seperti yang ditunjukkan dalam contoh berikut:

Kaedah URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3

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

Minta sifat tertentu

Gunakan pilihan pertanyaan sistem $select untuk mengehadkan sifat yang dikembalikan seperti ditunjukkan dalam contoh berikut:

Kaedah URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

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

Penting

Ini ialah amalan terbaik prestasi. Jika sifat tidak ditentukan dan anda telah mengkonfigurasi nilai tetapan tapak Webapi/<table name>/fields kepada *, maka semua sifat akan dikembalikan menggunakan $select. Jika tiada sifat dinyatakan, maka ralat akan dikembalikan.

Tapis hasil

Gunakan pilihan pertanyaan sistem $filter untuk menetapkan kriteria bagi baris yang akan dikembalikan.

Operator penapis standard

API Web menyokong operator penapis OData standard yang disenaraikan dalam jadual berikut:

Operator Penerangan Contoh
Operator Perbandingan
eq Sama dengan $filter=revenue eq 100000
ne Tidak Sama $filter=revenue ne 100000
gt Lebih besar daripada $filter=revenue gt 100000
ge Lebih besar atau sama $filter=revenue ge 100000
lt Kurang daripada $filter=revenue lt 100000
le Kurang daripada atau sama $filter=revenue le 100000
Operator Logik
dan Logik dan $filter=revenue lt 100000 and revenue gt 2000
or Logik atau $filter=contains(name,'(sample)') or contains(name,'test')
tidak Penafian logik $filter=not contains(name,'sample')
Operator Kumpulan
( ) Kumpulan duluan (contains(name,'sample') or contains(name,'test')) and revenue gt 5000

Fungsi pertanyaan standard

API Web menyokong fungsi pertanyaan rentetan OData standard ini:

Fungsi Contoh
mengandungi $filter=contains(name,'(sample)')
endswith $filter=endswith(name,'Inc.')
startswith $filter=startswith(name,'a')

Fungsi pertanyaan Dataverse

API Web menyokong fungsi pertanyaan Dataverse untuk menapis hasil. Untuk maklumat lanjut, lihat Rujukan Fungsi Pertanyaan API Web.

hasil tertib

Nyatakan tertib item yang dikembalikan menggunakan pilihan pertanyaan sistem $orderby. Gunakan akhiran naik atau turun untuk menentukan tertib menaik atau menurun masing-masing. Lalai adalah menaik jika akhiran tidak digunakan. Contoh berikut menunjukkan pengambilan nama dan sifat hasil akaun yang disusun mengikut hasil menaik dan mengikut nama menurun.

Kaedah URI
GET [Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000

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

Keputusan aggregat dan pengelompokan

Dengan menggunakan $apply anda boleh mengagregat dan mengelompokkan data anda secara dinamik seperti yang dilihat dalam contoh berikut:

Senario Contoh
Senarai status unik dalam pertanyaan accounts?$apply=groupby((statuscode))
Jumlah agregat nilai anggaran opportunities?$apply=aggregate(estimatedvalue dengan jumlah)
Saiz purata urusan berdasarkan anggaran nilai dan status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue dengan purata sebagai averagevalue)
Jumlah nilai anggaran berdasarkan status opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue dengan jumlah))
Jumlah hasil peluang mengikut nama akaun opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue dengan jumlah))
Nama kenalan utama untuk akaun dalam 'WA' accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname))
Tarikh dan masa rekod terakhir dibuat accounts?$apply=aggregate(createdon dengan maks sebagai lastCreate)
Tarikh dan masa rekod yang pertama dicipta accounts?$apply=aggregate(createdon dengan min sebagai firstCreate)

Mendapatkan kiraan baris

Gunakan pilihan pertanyaan sistem $count dengan nilai benar untuk memasukkan kiraan entiti yang sepadan dengan kriteria penapis sehingga 5,000.

Kaedah URI
GET [Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true

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

Respons sampel

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

Jika anda tidak mahu mengembalikan sebarang data kecuali untuk kiraan, anda boleh menggunakan $count pada sebarang koleksi untuk mendapatkan nilai sahaja.

Kaedah URI
GET [Portal URI/_api/accounts/$count

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

Respons sampel

3

Perbandingan lajur

Contoh berikut menunjukkan cara membandingkan lajur menggunakan API Web:

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

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

Gunakan pilihan pertanyaan sistem $expand dalam sifat navigasi untuk mengawal data daripada entiti berkaitan yang dikembalikan.

Cari sifat navigasi yang berkaitan

Anda perlu menggunakan Microsoft.Dynamics.CRM.associatednavigationproperty sebagai atribut carian apabila menggunakan pilihan pertanyaan $expand.

Untuk menentukan Microsoft.Dynamics.CRM.associatednavigationproperty atribut, anda boleh membuat permintaan http GET berikut untuk lajur menggunakan konvensyen penamaan berikut: _name_value.

Dalam contoh berikut, kita boleh menentukan sifat navigasi yang berkaitan bagi lajur Kenalan Utama jadual Akaun dengan menyatakan nama lajur primarycontactid dengan memformatkan nama dalam permintaan:: _primarycontactid_value.

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

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

Respons sampel

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

Kita melihat daripada respons bahawa sifat navigasi yang berkaitan ialah primarycontactid. Sifat navigasi yang berkaitan boleh merupakan sama ada nama logik atau nama skema lajur carian bergantung pada cara jadual dibuat.

Untuk mendapatkan maklumat lanjut lihat Dapatkan data tentang sifat carian.

Contoh berikut menunjukkan cara untuk mendapatkan semula kenalan untuk semua rekod akaun. Untuk rekod kenalan yang berkaitan, kami hanya mendapatkan semula idkenalan dan namapenuh.

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

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

Respons sampel

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

Jika anda mengembangkan parameter navigasi bernilai koleksi untuk mendapatkan semula jadual berkaitan bagi set entiti, hanya satu tahap kedalaman dikembalikan jika terdapat data. Jika tidak, koleksi akan mengembalikan tatasusunan kosong.

Kaedah URI
GET [Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart)

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

Contoh berikut menunjukkan cara anda boleh mengembangkan entiti berkaitan untuk set entiti menggunakan kedua-dua sifat navigasi bernilai tunggal dan koleksi. Anda perlu menentukan nama perhubungan jadual dalam sintaks kod anda.

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

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

Langkah Seterusnya

Portal menulis, mengemas kini dan memadam operasi menggunakan API Web

Lihat juga