Partager via


Joindre des tables à l’aide d’OData

Pour contrôler les données renvoyées à partir des enregistrements de table associés, utilisez l’option de requête avec les propriétés de navigation. $expand ...

  • Vous pouvez inclure jusqu’à 15 $expand options dans une requête. Chaque option $expand crée une jointure qui peut affecter les performances.
  • Les requêtes qui développent les propriétés de navigation à valeur de collection peuvent renvoyer des données mises en cache pour les propriétés qui ne reflètent pas des modifications récentes. Il est préférable d’utiliser l’en-tête If-None-Match avec la valeur null pour remplacer la mise en cache du navigateur. En savoir plus sur l’utilisation des en-têtes HTTP pour plus de détails.

Le tableau suivant décrit les options de requête que vous pouvez appliquer dans certaines $expand options :

Option Description Pour plus d’informations
$select Sélectionnez les propriétés à retourner. Sélectionner des colonnes
$filter Pour les propriétés de navigation à valeur de collection, limitez les enregistrements retournés. Filtrer des lignes
$orderby Pour les propriétés de navigation à valeur de collection, contrôlez l’ordre des enregistrements retournés. Non pris en charge avec $expand imbriqué. $expand imbriqué sur les propriétés de navigation à valeur de collection
$top Pour les propriétés de navigation à valeur de collection, limitez le nombre des enregistrements retournés. Non pris en charge avec $expand imbriqué. $expand imbriqué sur les propriétés de navigation à valeur de collection
$expand Développez les propriétés de navigation dans le jeu d’entités associé. En utilisant $expand dans un $expand s’appelle un $expand imbriqué. Extension imbriquée des propriétés de navigation à valeur unique et extension imbriquée $expand sur les propriétés de navigation à valeur de collection

Ces options sont un sous-ensemble des options de requête décrites dans OData Version 4.0 Partie 1 : Protocole Plus Errata 02 11.2.4.2.1 Développer les options. Les options $skip, $count, $search, et $levels ne sont pas prises en charge pour l’API web Dataverse.

Utilisez ces options avec $expand en les ajoutant entre parenthèses après le nom de la propriété de navigation. Séparez chaque option par un point-virgule (;).

Par exemple, dans la requête qui suit :

  • Demande la propriété account.name

  • Rejoint la propriété de navigation AccountTasks de la collection demandant :

    • Propriété task.subject
    • Emplacement où task.subject contient la chaîne de caractères « Task »
    • Trié par date de task.createdon, dans l’ordre décroissant
/accounts?$select=name&$expand=Account_Tasks($select=subject;$filter=contains(subject,'Task');$orderby=createdon desc)

Limiter les colonnes avec $select

Comme pour toute requête, limitez toujours les colonnes renvoyées à l’aide de $select quand vous utilisez $expand. Par exemple, la requête suivante renvoie les valeurs contact.fullname et task.subject dans les résultats développés du type d’entité account :

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid($select=fullname),Account_Tasks($select=subject)
Prefer: odata.maxpagesize=1
If-None-Match: null
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0
Preference-Applied: odata.maxpagesize=1

{
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid(fullname),Account_Tasks(subject))",
    "value": [
        {
            "@odata.etag": "W/\"80649578\"",
            "name": "Litware, Inc. (sample)",
            "accountid": "78914942-34cb-ed11-b596-0022481d68cd",
            "primarycontactid": {
                "fullname": "Susanna Stubberod (sample)",
                "contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd"
            },
            "Account_Tasks": [
                {
                    "@odata.etag": "W/\"80649460\"",
                    "subject": "Task 1 for Litware",
                    "_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
                    "activityid": "f68393c1-34cb-ed11-b597-000d3a993550"
                }
            ],
            "Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject"
        }
    ],
    "@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name&$expand=primarycontactid($select=fullname),Account_Tasks($select=subject)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}

Il est important de garder en tête qu’il existe deux types de propriétés de navigation. En savoir plus sur les propriétés de navigation de l’API Web

  • Les propriétés de navigation à valeur unique correspondent aux attributs de recherche qui prennent en charge les relation plusieurs-à-un et permettent de définir une référence à un autre enregistrement.

  • Les propriétés de navigation avec une valeur de collection correspondent aux relations un-à-plusieurs ou plusieurs-à-plusieurs.

Le développement d’une propriété de navigation à valeur de collection peut augmenter la taille de la réponse d’une manière qu’il est difficile d’anticiper. Il est important que vous incluiez des limites pour contrôler la quantité de données renvoyées. Vous pouvez limiter le nombre d’enregistrements en utilisant la pagination. En savoir plus sur les résultats de la pagination

Il existe une différence significative dans la manière dont la pagination est appliquée aux options $expand imbriquées appliquées aux propriétés de navigation à valeur de collection. En savoir plus sur l’extension des propriétés de navigation à valeur de collection

Développer les propriétés de navigation à valeur unique

L’exemple suivant montre comment récupérer des enregistrements de contact, y compris le contact principal et l’utilisateur qui a créé les enregistrements.

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid($select=contactid,fullname),createdby($select=fullname)  
Prefer: odata.maxpagesize=2
If-None-Match: null
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0

Réponse :

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0  
  
{
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid(contactid,fullname),createdby(fullname))",
    "value": [
        {
            "@odata.etag": "W/\"80649578\"",
            "name": "Litware, Inc. (sample)",
            "accountid": "78914942-34cb-ed11-b596-0022481d68cd",
            "primarycontactid": {
                "contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
                "fullname": "Susanna Stubberod (sample)"
            },
            "createdby": {
                "fullname": "System Administrator",
                "systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
                "ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
            }
        },
        {
            "@odata.etag": "W/\"80649580\"",
            "name": "Adventure Works (sample)",
            "accountid": "7a914942-34cb-ed11-b596-0022481d68cd",
            "primarycontactid": {
                "contactid": "72bf4d48-34cb-ed11-b596-0022481d68cd",
                "fullname": "Nancy Anderson (sample)"
            },
            "createdby": {
                "fullname": "System Administrator",
                "systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
                "ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
            }
        }
    ],
    "@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name%0A&$expand=primarycontactid($select=contactid,fullname),createdby($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}

La propriété de navigation à valeur unique createdby renvoie une instance de l’EntityType systemuser. Les propriétés systemuserid et ownerid sont renvoyées. En effet, systemuser hérite de EntityType principal et partage la clé primaire ownerid avec l’équipe EntityType par cet héritage.

Cependant, la table Utilisateur (SystemUser) a la clé primaire de SystemUserId. Les propriétés systemuserid et ownerid ont la même valeur. En savoir plus sur l’héritage EntityType

Références de retour

Au lieu de retourner les données, vous pouvez également retourner des références (liens) aux enregistrements associés en développant la propriété de navigation à valeur unique avec l’option /$ref. L’exemple suivant renvoie des objets JSON avec une propriété @odata.id qui a une URL pour chaque contact principal.

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid/$ref  
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Réponse :

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0  
  
{
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid,primarycontactid/$ref())",
    "value": [
        {
            "@odata.etag": "W/\"80649578\"",
            "name": "Litware, Inc. (sample)",
            "_primarycontactid_value": "70bf4d48-34cb-ed11-b596-0022481d68cd",
            "accountid": "78914942-34cb-ed11-b596-0022481d68cd",
            "primarycontactid": {
                "@odata.id": "[Organization URI]/api/data/v9.2/contacts(70bf4d48-34cb-ed11-b596-0022481d68cd)"
            }
        },
        {
            "@odata.etag": "W/\"80649580\"",
            "name": "Adventure Works (sample)",
            "_primarycontactid_value": "72bf4d48-34cb-ed11-b596-0022481d68cd",
            "accountid": "7a914942-34cb-ed11-b596-0022481d68cd",
            "primarycontactid": {
                "@odata.id": "[Organization URI]/api/data/v9.2/contacts(72bf4d48-34cb-ed11-b596-0022481d68cd)"
            }
        }
    ],
    "@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name%0A&$expand=primarycontactid/$ref&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}

Vous pouvez uniquement utiliser l’option /$ref avec les propriétés de navigation à valeur unique. Si vous l’utilisez pour une propriété de navigation avec une valeur de collection, l’erreur suivante est retournée :

{
    "error": {
        "code": "0x80060888",
        "message": "Expand with $ref is only supported on lookup type navigation property."
    }
}

Développement imbriqué des propriétés de navigation à valeur unique

Vous pouvez étendre les propriétés de navigation à valeur unique sur plusieurs niveaux en imbriquant une option $expand dans un autre option $expand.

La requête suivante renvoie des enregistrements task et étend le contact associé, le account associé au contact, et enfin le systemuser qui a créé l’enregistrement account.

Demande :

GET [Organization URI]/api/data/v9.2/tasks?$select=subject
&$expand=regardingobjectid_contact_task($select=fullname;
 $expand=parentcustomerid_account($select=name;
  $expand=createdby($select=fullname)))  
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  
Prefer: odata.maxpagesize=2

Réponse :

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0 

{
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#tasks(subject,regardingobjectid_contact_task(fullname,parentcustomerid_account(name,createdby(fullname))))",
    "value": [
        {
            "@odata.etag": "W/\"80730855\"",
            "subject": "Task 1 for Susanna Stubberod",
            "activityid": "e9a8c72c-dbcc-ed11-b597-000d3a993550",
            "regardingobjectid_contact_task": {
                "fullname": "Susanna Stubberod (sample)",
                "contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
                "parentcustomerid_account": {
                    "name": "Litware, Inc. (sample)",
                    "accountid": "78914942-34cb-ed11-b596-0022481d68cd",
                    "createdby": {
                        "fullname": "System Administrator",
                        "systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
                        "ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
                    }
                }
            }
        },
        {
            "@odata.etag": "W/\"80730861\"",
            "subject": "Task 2 for Susanna Stubberod",
            "activityid": "c206f534-dbcc-ed11-b597-000d3a993550",
            "regardingobjectid_contact_task": {
                "fullname": "Susanna Stubberod (sample)",
                "contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
                "parentcustomerid_account": {
                    "name": "Litware, Inc. (sample)",
                    "accountid": "78914942-34cb-ed11-b596-0022481d68cd",
                    "createdby": {
                        "fullname": "System Administrator",
                        "systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
                        "ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
                    }
                }
            }
        }
    ],
    "@odata.nextLink": "[Organization URI]/api/data/v9.2/tasks?$select=subject&$expand=regardingobjectid_contact_task($select=fullname;$expand=parentcustomerid_account($select=name;$expand=createdby($select=fullname)))&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253cactivityid%2520last%253d%2522%257bC206F534-DBCC-ED11-B597-000D3A993550%257d%2522%2520first%253d%2522%257bE9A8C72C-DBCC-ED11-B597-000D3A993550%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}

Développer les propriétés de navigation à valeur de collection

Il existe des différences importantes dans la réponse selon que vous utilisez $expand imbriqué avec une propriété de navigation à valeur de collection n’importe où dans votre requête.

$expand imbriqué $expand unique
Paging Pagination sur lignes développées. Pagination uniquement sur ressource EntitySet. URL <property name>@odata.nextLink des lignes développées n’incluent pas les informations de pagination.
$top ou $orderby pris en charge Non Oui

Développez $expand sur les propriétés de navigation avec une valeur de collection

Si vous n’utilisez qu’un seul niveau $expand, aucune pagination n’est appliquée aux lignes développées. Si vous incluez l’en-tête de requête Prefer: odata.maxpagesize, la pagination n’est appliquée qu’à la ressource EntitySet de la requête.

Chaque propriété de navigation développée à valeur de collection renvoie une <property>@odata.nextLink URL qui n’inclut aucune information de pagination. Il s’agit d’une URL qui représente la collection filtrée pour la relation avec vos options de requête ajoutées. Vous pouvez utiliser cette URL pour envoyer une requête distincte GET et elle renvoie les mêmes lignes que celles qui ont été renvoyées dans votre requête d’origine. Vous pouvez appliquer la pagination à cette demande.

Comme aucune pagination n’est appliquée aux enregistrements développés, il est possible de renvoyer jusqu’à 5 000 enregistrements connexes pour chaque propriété de navigation à valeur de collection développée. En fonction de vos données et de la requête, il peut s’agir d’un grand nombre de données. Le renvoi d’une telle quantité de données peut affecter les performances et éventuellement entraîner l’expiration de votre requête. Soyez prudent avec les requêtes que vous composez. Vous pouvez utiliser les options $top, $filter et $orderby pour contrôler le nombre total d’enregistrements renvoyés.

L’exemple suivant inclut un seul développement de Account_Tasks et contact_customer_accounts lors de la récupération des enregistrements de compte. L’en-tête de requête Prefer: odata.maxpagesize=1 garantit qu’un seul enregistrement de compte est renvoyé dans la première page.

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=name,accountid
&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname)
Prefer: odata.maxpagesize=1
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Réponse :

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=1
OData-Version: 4.0 

{
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,accountid,Account_Tasks(subject),contact_customer_accounts(fullname))",
    "value": [
        {
            "@odata.etag": "W/\"80649578\"",
            "name": "Litware, Inc. (sample)",
            "accountid": "78914942-34cb-ed11-b596-0022481d68cd",
            "Account_Tasks": [
                {
                    "@odata.etag": "W/\"80730894\"",
                    "subject": "Task 1 for Litware",
                    "_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
                    "activityid": "be9f6557-e2cc-ed11-b597-000d3a993550"
                },
                {
                    "@odata.etag": "W/\"80730903\"",
                    "subject": "Task 2 for Litware",
                    "_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
                    "activityid": "605dbd65-e2cc-ed11-b597-000d3a993550"
                },
                {
                    "@odata.etag": "W/\"80730909\"",
                    "subject": "Task 3 for Litware",
                    "_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
                    "activityid": "a718856c-e2cc-ed11-b597-000d3a993550"
                }
            ],
            "Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject",
            "contact_customer_accounts": [
                {
                    "@odata.etag": "W/\"80648695\"",
                    "fullname": "Susanna Stubberod (sample)",
                    "_parentcustomerid_value": "78914942-34cb-ed11-b596-0022481d68cd",
                    "contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd"
                }
            ],
            "contact_customer_accounts@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/contact_customer_accounts?$select=fullname"
        }
    ],
    "@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name,accountid&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}

Comparez cette réponse avec l’exemple suivant, qui inclut un $expand imbriqué. Faites défiler l’exemple de réponse horizontalement pour voir que seule l’URL @odata.nextLink du résultat du compte contient des informations de pagination.

$expand imbriqué dans les propriétés de navigation avec une valeur de collection

Si vous utilisez un $expand imbriqué n’importe où dans votre requête et que vous avez inclus l’en-tête de requête Prefer: odata.maxpagesize, la pagination est appliquée à chacune des collections étendues.

Chaque propriété de navigation développée à valeur de collection renvoie une <property>@odata.nextLink URL qui inclut des informations de pagination. Vous pouvez utiliser cette URL pour envoyer une requête distincte GET et elle renverra l’ensemble d’enregistrements qui n’était pas inclus dans votre requête d’origine.

Vous ne pouvez pas utiliser les options $top ou $orderby pour limiter le nombre total d’enregistrements renvoyés avec un $expand imbriqué. L’erreur suivante est renvoyée si vous utilisez ces options :

{
    "error": {
        "code": "0x80060888",
        "message": "Only $select and $filter clause can be provided while doing $expand on many-to-one relationship or nested one-to-many relationship."
    }
}

L’exemple suivant est basé sur l’exemple précédent et utilise les mêmes données. La seule différence est l’ajout dans l’URL de ce $expand imbriqué sur une propriété de navigation à valeur unique pour renvoyer le utilisateur propriétaire du contact : ;$expand=owninguser($select=fullname).

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=name,accountid
&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname;
$expand=owninguser($select=fullname))
Prefer: odata.maxpagesize=1
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Réponse :

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=1
OData-Version: 4.0 

{
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,accountid,Account_Tasks(subject),contact_customer_accounts(fullname,owninguser(fullname)))",
    "value": [
        {
            "@odata.etag": "W/\"80649578\"",
            "name": "Litware, Inc. (sample)",
            "accountid": "78914942-34cb-ed11-b596-0022481d68cd",
            "Account_Tasks": [
                {
                    "subject": "Task 1 for Litware",
                    "activityid": "be9f6557-e2cc-ed11-b597-000d3a993550"
                }
            ],
            "Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject,description&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253cactivityid%2520last%253d%2522%257bbe9f6557-e2cc-ed11-b597-000d3a993550%257d%2522%2520first%253d%2522%257bbe9f6557-e2cc-ed11-b597-000d3a993550%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E",
            "contact_customer_accounts": [
                {
                    "fullname": "Susanna Stubberod (sample)",
                    "contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
                    "owninguser": {
                        "fullname": "System Administrator",
                        "systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
                        "ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
                    }
                }
            ],
            "contact_customer_accounts@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/contact_customer_accounts?$select=fullname&$expand=owninguser($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253ccontactid%2520last%253d%2522%257b70bf4d48-34cb-ed11-b596-0022481d68cd%257d%2522%2520first%253d%2522%257b70bf4d48-34cb-ed11-b596-0022481d68cd%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
        }
    ],
    "@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name,accountid&$expand=Account_Tasks($select=subject,description),contact_customer_accounts($select=fullname;$expand=owninguser($select=fullname))&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b78914942-34cb-ed11-b596-0022481d68cd%257d%2522%2520first%253d%2522%257b78914942-34cb-ed11-b596-0022481d68cd%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}

Comparez cette réponse avec l’exemple précédent, qui n’utilise pas de $expand imbriqué. Dans ce réponse :

  • L’en-tête de requête est appliqué aux enregistrements renvoyés avec. Prefer: odata.maxpagesize=1 task Account_Tasks
  • Une seule tâche est renvoyée au lieu de trois.
  • L’ URL Account_Tasks@odata.nextLink renvoie les deux tâches suivantes.
  • Faites défiler l’exemple de réponse horizontalement pour voir que les URL Account_Tasks@odata.nextLink, contact_customer_accounts@odata.nextLink et@odata.nextLink contiennent des informations de pagination.

Étapes suivantes

Découvrez comment trier des lignes.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).