Partager via


Interroger les données à l’aide de l’API web des portails

Vous pouvez utiliser les opérations d’API Web disponibles dans Power Pages. Les opérations d’API Web se composent de requêtes et de réponses HTTP. Cet article fournit des exemples d’opérations de lecture, de méthodes, d’URI et l’exemple de JSON que vous pouvez utiliser dans la requête HTTP.

Conditions préalables

  • Votre version du site web doit être 9.4.1.x ou supérieure.

  • Activer la table et le champ pour les opérations de l’API Web. Pour plus d’informations :Paramètres du site pour l’API Web

  • L’API Web des portails accède aux enregistrements de table et suit les autorisations de table accordées aux utilisateurs via les rôles Web associés. Assurez-vous de configurer les autorisations de table appropriées. Plus d’informations : Créer des rôles Web

Note

Lorsqu’on se réfère aux tables Dataverse à l’aide de l’API Web des portails, vous devez utiliser EntitySetName, par exemple, pour accéder à la table compte, la syntaxe du code utilisera le nom EntitySetName de comptes.

Enregistrements de requête

L’exemple suivant interroge les enregistrements de compte :

Opération Method URI
Récupérer des enregistrements de table GET [Portal URI]/_api/accounts

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

Exemple de réponse

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

Utilisez les options de requête système $select et $top pour renvoyer la propriété name pour les trois premiers comptes :

Opération Method URI
Récupérer les trois premiers enregistrements d’entité GET [Portal URI]/_api/accounts?$select=name,revenue&$top=3

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

Récupérer le compte en utilisant l’ID de compte :

Opération Method URI
Récupérer une propriété spécifique pour un enregistrement GET [Portal URI]/_api/accounts(e0e11ba8-92f6-eb11-94ef-000d3a5aa607)?$select=name

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

Exemple de réponse

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

Appliquer des options de requête système

Chacune des options de requête système que vous ajoutez à l’URL de l’ensemble d’entités est ajoutée à la syntaxe des chaînes de requête. La première est ajoutée après [?] et les options de requête suivantes sont séparées à l’aide d’un [&]. Toutes les options de requête respectent la casse comme illustré dans l’exemple suivant :

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

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

Propriétés spécifiques de la demande

Utilisez l’option de requête système $select pour limiter les propriétés renvoyées comme illustré dans l’exemple suivant :

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

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

Important

C’est une pratique recommandée. Si les propriétés ne sont pas spécifiées et que vous avez configuré la valeur du paramètre de site Webapi/<table name>/fields dans *, alors toutes les propriétés seront renvoyées en utilisant $select. Si aucune propriété n’est spécifiée, une erreur sera renvoyée.

Filtrer les résultats

Utilisez l’option de requête système $filter pour définir les critères pour lesquels les lignes sont renvoyées.

Opérateurs de filtre standard

L’API Web prend en charge les opérateurs de filtre OData standard répertoriées dans le tableau suivant :

Opérateur Description Exemple
Opérateurs de comparaison
eq Égal à $filter=revenue eq 100000
ne Différent de $filter=revenue ne 100000
gt Supérieur(e) à $filter=revenue gt 100000
ge Supérieur ou égal à $filter=revenue ge 100000
lt Inférieur(e) à $filter=revenue lt 100000
le Inférieur ou égal à $filter=revenue le 100000
Opérateurs logiques
and ET logique $filter=revenue lt 100000 and revenue gt 2000
or OU logique $filter=contains(name,’(sample)’) or contains(name,’test’)
not Négation logique $filter=not contains(name,’sample’)
Opérateurs de groupement
( ) Groupement de priorité (contains(name,’sample’) or contains(name,’test’)) and revenue gt 5000

Fonctionnalités de requête standard

L’API Web prend en charge ces fonctions de requête de chaîne OData standard :

Fonction Exemple
contient $filter=contains(name,’(sample)’)
endswith $filter=endswith(name,’Inc.’)
startswith $filter=startswith(name,’a’)

Fonctions de requête Dataverse

L’API Web prend en charge les fonctions de requête Dataverse pour filtrer les résultats. Pour plus d’informations, voir Référence de fonction de requête de l’API Web.

Classer les résultats

Spécifiez l’ordre dans lequel les éléments sont renvoyés à l’aide de l’option de requête système $orderby. Utilisez le suffixe asc ou desc pour spécifier l’ordre croissant ou décroissant respectivement. La valeur par défaut est croissant si le suffixe n’est pas appliqué. L’exemple suivant présente la récupération des propriétés de nom et de revenu des comptes contrôlées par le revenu croissant et par le nom décroissant.

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

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

Agréger et regrouper les résultats

En utilisant $apply, vous pouvez agréger et regrouper vos données de manière dynamique comme le montrent les exemples suivants :

Scénarios Exemple
Liste de statuts uniques dans la requête accounts?$apply=groupby((statuscode))
Somme agrégée de la valeur estimée opportunities?$apply=aggregate(estimatedvalue with sum as total)
Taille moyenne de la transaction basée sur la valeur et le statut estimés opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with average as averagevalue)
Somme de la valeur estimée selon le statut opportunities?$apply=groupby((statuscode),aggregate(estimatedvalue with sum as total))
Revenu total d’opportunités par nom de compte opportunities?$apply=groupby((parentaccountid/name),aggregate(estimatedvalue with sum as total))
Noms du contact principal pour les comptes dans « WA » accounts?$apply=filter(address1_stateorprovince eq ’WA’)/groupby((primarycontactid/fullname))
Date et heure de l’enregistrement créé en dernier accounts?$apply=aggregate(createdon with max as lastCreate)
Date et heure de l’enregistrement créé en premier accounts?$apply=aggregate(createdon with min as firstCreate)

Récupérer un nombre de lignes

Utilisez l’option de requête système $count contenant une valeur True pour inclure un nombre d’entités correspondant aux critères de filtre jusqu’à 5 000.

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

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

Exemple de réponse

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

Si vous ne souhaitez renvoyer aucune donnée sauf le nombre, vous pouvez appliquer $count à un ensemble pour obtenir uniquement la valeur.

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

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

Exemple de réponse

3

Comparaison de colonnes

L’exemple suivant montre comment comparer des colonnes à l’aide de l’API Web :

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

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

Utilisez l’option de requête système $expand dans les propriétés de navigation pour contrôler quelles données des entités associées sont renvoyées.

Propriété de navigation associée à la recherche

Vous devrez utiliser Microsoft.Dynamics.CRM.associatednavigationproperty comme attribut de recherche lors de l’utilisation de l’option de requête $expand.

Pour déterminer la propriété Microsoft.Dynamics.CRM.associatednavigationproperty d’un attribut, vous pouvez créer la requête GET http suivante pour la colonne en utilisant la convention d’affectation de noms suivante : _name_value.

Dans l’exemple suivant, nous pouvons déterminer la propriété de navigation associée de la colonne Contact principal de la table Compte table en spécifiant le nom de la colonne primarycontactid lors du formatage du nom dans la requête : _primarycontactid_value.

Method URI
OBTENIR [Portal URI]/_api/accounts?$select=_primarycontactid_value

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

Exemple de réponse

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

Nous voyons dans la réponse que la propriété de navigation associée est primarycontactid. La propriété de navigation associée peut être le nom logique ou le nom de schéma de la colonne de recherche selon la façon dont la table a été créée.

Pour plus d’informations, consultez Extraire les données sur les propriétés de recherche.

L’exemple suivant montre comment récupérer le contact pour tous les enregistrements de compte. Pour les enregistrements de contact associés, nous récupérons uniquement contactid et fullname.

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

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

Exemple de réponse

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

Si vous développez les paramètres de navigation à valeur de collection pour récupérer les tables associées pour les ensembles d’entités, un seul niveau de profondeur est renvoyé s’il y a des données. Sinon, la collection renverra un tableau vide.

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

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

L’exemple suivant montre comment vous pouvez développer les entités associées pour des groupes d’entités en utilisant les propriétés de navigation à valeur unique ou à valeur de collection. Vous devrez spécifier le nom de la relation de la table dans la syntaxe de votre code.

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

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

Étape suivante

Opérations d’écriture, de mise à jour et de suppression à l’aide de l’API Web

Voir aussi