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 |
Dapatkan rekod jadual yang berkaitan dengan pertanyaan
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.
Dapatkan semula rekod jadual yang berkaitan dengan mengembangkan sifat navigasi bernilai tunggal
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)"
}
}
]
}
Dapatkan semula jadual yang berkaitan dengan mengembangkan sifat navigasi bernilai koleksi
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) |
Dapatkan semula jadual berkaitan dengan mengembangkan kedua-dua sifat navigasi bernilai tunggal dan bernilai koleksi
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