Portal Web API kullanarak verileri sorgulama
Power Pages uygulamasında kullanılabilir Web API'si işlemlerini kullanabilirsiniz. Web API işlemleri HTTP isteklerinden ve yanıtlardan oluşur. Bu makale, HTTP isteğinde kullanabileceğiniz örnek okuma işlemleri, yöntemler, URI ve örnek JSON sağlar.
Önkoşullar
Web sitesi sürümünüz 9.4.1.x veya üzeri olmalıdır.
Web API işlemleri için tabloyu ve alanı etkinleştir. Daha fazla bilgi: Web API için site ayarları
Portal Web API tablo kayıtlarına erişir ve ilgili web rolleri aracılığıyla kullanıcılara verilen tablo izinlerini izler. Doğru tablo izinlerini yapılandırdığınızdan emin olun. Daha fazla bilgi: Web rolleri oluşturma
Not
Portal Web API'sini kullanarak Dataverse tablolarına başvuruda bulunurken EntitySetName kullanmanız gerekir (ör. firma tablosuna erişmek için). Bu durumda, kod sözdizimi firmalar için EntitySetName kullanır.
Sorgu kayıtları
Aşağıdaki örnek firma kayıtlarını sorgular:
İşlem | Method | URI |
---|---|---|
Tablo kayıtlarını al | GET | [Portal URI]/_api/accounts Örnek: https://contoso.powerappsportals.com/_api/accounts |
Örnek yanıt
{
"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"
}
]
}
İlk üç firmanın ad özelliğini döndürmek için $select ve $top sistem sorgusu seçeneklerini kullanın:
İşlem | Method | URI |
---|---|---|
İlk üç varlık kaydını alma | GET | [Portal URI]/_api/accounts?$select=name,revenue&$top=3 Örnek: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Hesap kimliğiyle hesap alma:
İşlem | Method | URI |
---|---|---|
Bir kaydın belirli özelliğini alma | GET | [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name Örnek: https://contoso.powerappsportals.com/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name |
Örnek yanıt
{
"@odata.etag": "W/\"1066414\"",
"name": "Adventure Works (sample)",
"accountid": "d6e11ba8-92f6-eb11-94ef-000d3a5aa607"
}
Sistem sorgu seçeneklerini uygula
Varlık kümesi için URL'ye eklediğiniz her sistem sorgusu seçeneği, sorgu dizelerinin sözdizimi kullanılarak eklenir. İlki, [?] sonrasında eklenir ve aşağıdaki sorgu seçenekleri [&] kullanılarak ayrılır. Aşağıdaki örnekte gösterildiği gibi, tüm sorgu seçenekleri büyük/küçük harf duyarlıdır:
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3 Örnek: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$filter=revenue gt 90000&$top=3 |
İsteğe özel özellikler
Aşağıdaki örnekte gösterildiği gibi döndürülen özellikleri sınırlandırmak için sistem sorgusu $select seçeneğini kullanın:
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$top=3 Örnek: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$top=3 |
Önemli
Bu, performans en iyi uygulamasıdır. Özellikler belirtilmemişse ve Webapi/<table name>/fields
site ayarı değerini *
olarak yapılandırdıysanız, $select
kullanılarak tüm özellikler döndürülür. Hiçbir özellik belirtilmezse, bir hata döndürülür.
Sonuçları filtrele
Hangi satırların döndürüleceğini ölçüt belirlemek için $filter sistem sorgusu seçeneğini kullanın.
Standart filtre işleçleri
Web API, aşağıdaki tabloda listelenen Standart OData filtre işleçlerini destekler:
Operator | Veri Akışı Açıklaması | Örnek |
---|---|---|
Karşılaştırma İşleçleri | ||
eşittir | Eşittir | $filter=revenue eq 100000 |
ne | Eşit Değil | $filter=revenue ne 100000 |
gt | Büyüktür | $filter=revenue gt 100000 |
ge | Büyüktür veya eşittir | $filter=revenue ge 100000 |
lt | Küçüktür | $filter=revenue lt 100000 |
le | Küçüktür veya eşittir | $filter=revenue le 100000 |
Mantıksal İşleçler | ||
and | Mantıksal ve | $filter=revenue lt 100000 and revenue gt 2000 |
or | Mantıksal eğer | $filter=contains(name,'(sample)') or contains(name,'test') |
not | Mantıksal değilleme | $filter=not contains(name,'sample') |
İşleçleri Gruplama | ||
( ) | Öncelik gruplandırması | (contains(name,'sample') or contains(name,'test')) and revenue gt 5000 |
Standart sorgu işlevleri
Web API şu standart OData dize sorgulama işlevlerini destekler:
İşlev | Örnek |
---|---|
içerir | $filter=contains(name,'(sample)') |
ilebiter | $filter=endswith(name,'Inc.') |
startswith | $filter=startswith(name,'a') |
Dataverse sorgu işlevleri
Web API'si, sonuçlara filtre uygulamak için Dataverse sorgu işlevlerini destekler. Daha fazla bilgi için bkz. Web API'si Sorgu İşlevi Referansı.
Sonuçları sırala
Öğelerin döndürüldüğü sırayı, $orderby sistem sorgusu seçeneğini kullanarak belirtin. Sırasıyla artan veya azalan düzende belirtmek için asc veya desc sonekini kullanın. Sonek uygulanmadıysa varsayılan değer artandır. Aşağıdaki örnekte, artan gelire göre ve azalan ada göre sıralanan firmaların ad ve gelir özelliklerinin alınması gösterilmektedir.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000 Örnek: https://contoso.powerappsportals.com/_api/accounts?$select=name,revenue&$orderby=name asc,revenue desc&$filter=revenue gt 90000 |
Toplama ve gruplandırma sonuçları
$apply kullanarak, aşağıdaki örneklerde görüldüğü gibi verilerinizi dinamik olarak toplayabilir ve gruplandırabilirsiniz:
Senaryolar | Örnek |
---|---|
Sorgudaki benzersiz durumların listesi | accounts?$apply=groupby((statuscode)) |
Tahmini değerin toplamını toplama | opportunities?$apply=aggregate(estimatedvalue with sum as total) |
Tahmini değer ve duruma göre kalan değerin ortalama boyutu | opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue) |
Duruma göre tahmini değerlerin toplamı | opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with sum as total)) |
Firma adına göre toplam fırsat geliri | opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum as total)) |
'WA' içindeki firmalar için birincil ilgili kişi adları | accounts?$apply=filter(address1_stateorprovince eq 'WA')/groupby((primarycontactid/fullname)) |
Son oluşturulan kayıt tarih ve saati | accounts?$apply=aggregate(createdon with max as lastCreate) |
İlk oluşturulan kayıt tarih ve saati | accounts?$apply=aggregate(createdon with min as firstCreate) |
Satır sayısı alma
5.000 değerine kadar olan filtre ölçütlerine uyan varlık sayısını içermek için, doğru değeriyle $count sistem sorgusu seçeneğini kullanın.
Method | URI |
---|---|
GET | [Portal URI/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true Örnek: https://contoso.powerappsportals.com/_api/accounts?$select=name&$filter=contains(name,'sample')&$count=true |
Örnek yanıt
{
"@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"
}
]
}
Sayım dışındaki verileri döndürmek istemiyorsanız, yalnızca değeri almak için herhangi bir koleksiyona $count uygulayabilirsiniz.
Method | URI |
---|---|
GET | [Portal URI/_api/accounts/$count Örnek: https://contoso.powerappsportals.com/_api/accounts/$count |
Örnek yanıt
3
Sütun karşılaştırması
Aşağıdaki örnekte, Web API kullanılarak sütunların nasıl karşılaştırılacağı gösterilmiştir:
Method | URI |
---|---|
GET | [Portal URI]/_api/contacts?$select=firstname&$filter=firstname eq lastname Örnek: https://contoso.powerappsportals.com/_api/contacts?$select=firstname&$filter=firstname eq lastname |
İlişkili tablo kayıtlarını bir sorguyla alma
İlgili varlıklardaki hangi verilerin döndürüleceğini denetlemek için gezinti özelliklerindeki $expand sistem sorgusu seçeneğini kullanın.
Arama ilişkilendirimiş gezintisi özelliği
Arama özniteliği olarak Microsoft.Dynamics.CRM.associatednavigationproperty kullanmanız gerekiyor, $expand sorgu seçeneğini kullanırken.
Özniteliğin Microsoft.Dynamics.CRM.associatednavigationproperty özelliğini belirlemek için şu adlandırma kuralını kullanarak sütun için aşağıdaki http GET isteğinde bulunabilirsiniz: _name_value.
Aşağıdaki örnekte, istekte adı biçimlendirerek primarycontactid sütun adını belirtip Firma tablosunun Birincil İlgili Kişi sütununa ilişkin ilişkili gezinme özelliğini belirleyebiliriz: _primarycontactid_value.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=_primarycontactid_value Örnek https://contoso.powerappsportals.com/_api/accounts?$select=_primarycontactid_value |
Örnek yanıt
{
"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"
}
]
}
Yanıttan ilişkilendirilmiş gezinti özelliğinin primarycontactid olduğunu görebiliriz. Tablonun nasıl oluşturulduğuna bağlı olarak ilişkilendirilmiş gezinme özelliği arama sütununun mantıksal adı veya şema adı olabilir.
Daha fazla bilgi için bkz. Arama özellikleri hakkındaki verileri alma.
Tek değerli gezinti özelliklerini genişleterek ilgili tablo kayıtlarını alın
Aşağıdaki örnekte, tüm firma kayıtları için ilgili kişinin nasıl alınacağı gösterilir. Alakalı ilgili kişi kayıtları için yalnızca contactidve fullname'i alırız.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) Örnek: https://contoso.powerappsportals.com/_api/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) |
Örnek yanıt
{
"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)"
}
}
]
}
Koleksiyon değerli gezinti özelliklerini genişleterek ilgili tabloları alın
Varlık kümeleriyle ilgili tabloları almak için koleksiyon değerli gezinti parametrelerini genişletirseniz, veri varsa yalnızca bir derinlik düzeyi döndürülür. Aksi takdirde, koleksiyon boş bir dizi döndürür.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart) Örnek: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=Account_Tasks($select=subject,scheduledstart) |
Hem tekli hem koleksiyon değerli gezinti özelliklerini genişleterek ilgili tabloları alın
Aşağıdaki örnekte, tek ve koleksiyon değerli gezinti özellikleri kullanılarak varlık kümeleri için ilgili varlıkları nasıl genişletebileceğinizi gösterir. Kodunuzun sözdiziminde tablo ilişkisi adını belirtmeniz gerekir.
Method | URI |
---|---|
GET | [Portal URI]/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart) Örnek: https://contoso.powerappsportals.com/_api/accounts?$top=5&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart) |
FetchXml kullanarak kayıtları sorgula
FetchXml sorgu parametresini kullanarak FetchXml sorgusunu URL ile kodlanmış bir dize değeri olarak varlık kümesi koleksiyonuna geçirin.
Örneğin, hesap varlık kümesinden veri almak için, varlık öğesi adı parametresini hesaba ayarlayan bir FetchXml sorgusu oluşturun.
<fetch top='2'>
<entity name='account'>
<attribute name='name' />
</entity>
</fetch>
Önceki sorgu için URL ile kodlanmış dize şöyledir:
%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 Örnek: 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 |
Örnek yanıt
{
"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)"
}
}
]
}
Sonraki Adım
Web API kullanarak portalları yazma, güncelleştirme ve silme işlemleri