Aracılığıyla paylaş


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

İ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.

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

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)

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

Ayrıca bkz.