Aracılığıyla paylaş


Portal Web API kullanarak verileri sorgulama

Not

12 Ekim 2022 tarihi itibarıyla Power Apps portalları, Power Pages olarak adlandırılmıştır. Daha fazla bilgi: Microsoft Power Pages genel kullanıma sunuldu (blog)
Yakında Power Apps portalları belgelerini taşıyıp Power Pages belgeleri ile birleştireceğiz.

Portalda kullanılabilir Web API 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

  • Portal 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 [&] 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

$expand sorgu seçeneğini kullandığınızda arama özniteliği olarak Microsoft.Dynamics.CRM.associatednavigationproperty kullanmanız gerekir.

Ö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. Kodun sözdiziminde tablo ilişki 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)

Sonraki Adım

Web API kullanarak portalları yazma, güncelleştirme ve silme işlemleri

Ayrıca bkz.

Portallar Web API'sına genel bakış
Öğretici: Portal Web API'sini kullanma
Sütun izinleri yapılandırma

Not

Belge dili tercihlerinizi bizimle paylaşabilir misiniz? Kısa bir ankete katılın. (lütfen bu anketin İngilizce olduğunu unutmayın)

Anket yaklaşık yedi dakika sürecektir. Kişisel veri toplanmaz (gizlilik bildirimi).