Suivez votre progression
Accueil Trailhead
Accueil Trailhead

Élaboration d’une interface utilisateur pour modifier un enregistrement.

Objectifs de formation

Une fois cette unité terminée, vous pourrez :
  • Faire une requête à l'API de l’interface utilisateur pour mettre à jour un enregistrement.
  • Décrire ce que les champs composés ont de particulier.
  • Faire une requête à l'API de l’interface utilisateur pour mettre à jour un champ composé.

Utilisation de Workbench pour appeler l'API de l’interface utilisateur

Nous allons utiliser Workbench pour faire un appel d'API afin de mettre à jour l'enregistrement Universal Containers.

Workbench est une suite d’outils qui permet d’interagir avec votre organisation Salesforce via l’API. Puisque vous pouvez exécuter des requêtes REST à partir de n’importe quel expéditeur HTTP, vous pouvez utiliser de nombreux autres outils (par exemple cURL ou Postman). Le Workbench fournit toutefois une infrastructure conviviale conçue spécialement pour les API Salesforce. Elle est idéale pour apprendre à écrire une intégration complète.

La première étape consiste à se connecter au Workbench.
  1. Connectez-vous à votre Trailhead Playground. Dans un autre onglet du navigateur, accédez à Workbench.
  2. Pour Environnement, sélectionnez Production.
  3. Pour la version d'API, sélectionnez le nombre le plus élevé.
  4. Assurez-vous de cocher J'accepte les conditions d'utilisation.
  5. Cliquez sur Se connecter avec Salesforce.

Vous êtes sur la page d'accueil de Workbench. Pour ce module, nous allons utiliser un seul outil Workbench, Explorateur REST.

Dans le menu supérieur, sélectionnez utilitaires | Explorateur REST.

Vous pouvez effectuer des appels d’API de l’interface utilisateur depuis l’explorateur REST de la même façon qu’à partir de n’importe quelle autre interface HTTP.

Workbench appelle la ressource /ui-api/object-info.

Pour effectuer un appel d’API, saisissez une méthode HTTP, ajoutez un corps de requête si nécessaire, puis cliquez sur Exécuter.

À vous de jouer : utilisez Workbench pour effectuer cette requête maintenant ! Saisissez cette URI, sélectionnez GET et cliquez sur Exécuter.
/services/data/v48.0/ui-api/object-info

La réponse est une liste de tous les objets que l'API de l’interface utilisateur et votre Trailhead Playground prennent en charge.

Remarque

Remarque

Si vous obtenez une erreur, assurez-vous que votre URI comprend v48.0, qui est la version de l’API.

Modification d'un enregistrement

Dans l'application Record Viewer, lorsqu'un utilisateur clique pour créer un enregistrement, la requête à /ui-api/record-ui/{recordIds} demande les modes d'affichage et de modification. La réponse JSON comprend des dispositions pour chaque mode, de sorte que l'application a suffisamment d'informations pour développer un formulaire qui permet aux utilisateurs de modifier l'enregistrement lorsqu'ils décident de le faire.

let recordViewUrl = action.creds.instanceUrl + '/services/data/v48.0/ui-api/record-ui/' 
  + action.recordId + '?formFactor=' + action.context.formFactor + '&layoutTypes=Full&modes=View,Edit';

Pour laisser un utilisateur modifier un enregistrement, l'application affiche un formulaire avec des champs modifiables. Lorsqu'un utilisateur clique sur Enregistrer, la saga recordUpdater.js effectue une requête PATCH vers la ressource /ui-api/records/{recordId} pour exécuter la mise à jour.

let recordDataUrl = action.creds.instanceUrl + '/services/data/v48.0/ui-api/records/' + action.recordId;

Utilisons Workbench pour mettre à jour un enregistrement, puis afficher la modification dans l'application Record Viewer et dans Salesforce. Nous avons d'abord besoin de l'ID de l'enregistrement à mettre à jour.

Dans l'application Record Viewer, dans Éléments récents, cliquez sur Universal Containers. Copiez l'ID de l'enregistrement à utiliser et dans la requête PATCH. Vous pouvez copier l'ID à partir du champ, en haut de l'application ou cliquer sur Afficher JSON et cliquer sur records pour voir l'ID de l'enregistrement. Voici un exemple JSON qui ressemble à ce que vous pouvez voir.
"records": {
    "0010V00002JoU6hQAF": {
      "apiName": "Account",
      "childRelationships": {},
      "eTag": "412642214dd7ef34eb3e2bae5e645dcc",
  1. Dans Workbench, cliquez sur Utilitaires | Explorateur REST.
  2. Saisissez ces paramètres :
    • Méthode HTTP : PATCH
    • URI de ressources : /services/data/v48.0/ui-api/records/{recordId}

      Remplacez {recordId} par l'ID d'enregistrement de Universal Containers.

    • Corps de la requête :
      {
          "fields" : {
              "Website": "www.example.com",
              "Rating" : "Hot"
          }
      }
  3. Cliquez sur Execute.
  4. Revenez à l'application Record Viewer et cliquez sur Afficher l'enregistrement pour recharger l'enregistrement de Universal Containers.

    Les champs Site Web et Évaluation ont été mis à jour. Vous pouvez également afficher la modification dans votre organisation Salesforce .

Modification d'un champ composé

La mise à jour des champs composés peut être difficile. Un champ composé regroupe plusieurs champs avec des types de données primitifs, tels que des nombres ou des chaînes, pour représenter un type de données complexe, par exemple un lieu ou une adresse. Un champ composé est constitué de champs de composants.

Par exemple, BillingAddress est un champ composé. Ses champs de composants sont BillingStreet, BillingCity, BillingState et BillingCountry. Les valeurs dans le champ composé et les valeurs dans les champs de composants mappent les mêmes données sous-jacentes stockées dans Salesforce ; ils ont toujours des valeurs identiques.

Les champs composés sont en lecture seule. Pour modifier un champ composé, vous devez mettre à jour ses champs de composants.

Si un champ est un champ composé, sa propriété objectInfo.fields[fieldName].compound est true.
"BillingAddress" : {
  "apiName" : "BillingAddress",
  "calculated" : false,
  "compound" : true,
  "compoundComponentName" : null,
  "compoundFieldName" : null,
  ...
Si un champ est un composant d'un champ composé, sa propriété objectInfo.fields[fieldName].compoundComponentName contient son nom de composant et sa propriété objectInfo.fields[fieldName].compoundFieldName contient le nom de son champ composé.
"BillingCity": {
  "apiName": "BillingCity",
  "calculated": false,
  "compound": false,
  "compoundComponentName": "City",
  "compoundFieldName": "BillingAddress",
  ...
Pour mettre à jour une adresse, fournissez les champs de composants sous forme d'entrées séparées. Par exemple, BillingAddress est un champ composé ; il est donc en lecture seule. Pour le mettre à jour, vous devez mettre à jour ses constituants.
  1. Dans Workbench, cliquez sur Utilitaires | Explorateur REST.
  2. Saisissez ces paramètres :
    • Méthode HTTP : PATCH
    • URI de ressources : /services/data/v48.0/ui-api/records/{recordId}

      Remplacez {recordId} par l'ID d'enregistrement de Universal Containers.

    • Corps de la requête :
      {
        "fields" : {
          "BillingPostalCode": "98112",
            "BillingState": "WA",
            "BillingCity": "Seattle",
            "BillingStreet" : "123 Main Street",
            "BillingCountry" : "USA"
        }
      }
  3. Cliquez sur Execute.
  4. Revenez à l'application Record Viewer et cliquez sur Afficher l'enregistrement pour recharger l'enregistrement de Universal Containers.

Examinez l'enregistrement mis à jour dans l'application Record Viewer.

En mode d'affichage, il est préférable de rendre un champ composé comme un champ unique. Champ composé en mode d'affichage.

En mode de modification, rendez les champs de composant modifiables par un utilisateur. Pour voir l'enregistrement en mode de modification, cliquez sur Modifier.Un champ composé en mode de modification affiche chaque champ de composants.

ETags

Un ETag est un en-tête HTTP qui identifie une réponse de manière unique. Votre application peut renvoyer un ETag à Salesforce a l'aide de l'en-tête de requête HTTP If-None-Match.

Si le JSON que Salesforce est sur le point de renvoyer est identique à celui que vous possédez, vous obtenez un HTTP 304, qui signifie que rien n'a changé et que votre application n'a pas à désérialiser une autre charge de travail.

L'utilisation d'ETags permet de réduire le trafic réseau et l'utilisation des données et améliore les performances de votre application. Cela est utile pour les charges de travail des métadonnées des objets et des présentations, car elles ne changent pas fréquemment.

Chaque réponse de l'API de l’interface utilisateur possède une propriété eTag qui contient un en-tête HTTP ETag qui est un identifiant opaque correspondant à la ressource. Vous pouvez voir la propriété eTag et un identifiant dans la réponse réduite de /ui-api/record-ui/{recordIds}.
root:{} 5 items
eTag:19d49d8dfba088456235a7cacc38138a
layoutUserStates:{} 1 item
layouts:{} 1 item
objectInfos:{} 1 item
records:{} 1 item

Si nous développons layouts, objectInfos et records dans la réponse JSON, nous pouvons voir que chacune de ses réponses intégrées contient également une propriété eTag. Cela est dû au fait que l'API d'IU possède des ressources qui renvoient chacune de ces réponses intégrées comme des réponses de niveau supérieur. Dans une charge de travail d'agrégats telle que /ui-api/record-ui/{recordIds}, chaque morceau de la charge de travail possède un ETag.

Ces ressources renvoient les réponses intégrées comme des réponses de niveau supérieur.
  • /ui-api/layout/{objectApiName}
  • /ui-api/object-info/{objectApiName}
  • /ui-api/records/{recordId}