Erstellen einer Benutzeroberfläche zum Bearbeiten eines Datensatzes
Lernziele
- Stellen Sie einer Anforderung an die User Interface API, um einen Datensatz zu aktualisieren
- Beschreiben der Besonderheiten zusammengesetzter Felder
- Stellen Sie einer Anforderung an die User Interface API, um ein zusammengesetztes Feld zu aktualisieren
Verwenden von Workbench zum Aufrufen der User Interface API
Wir werden Workbench für einen API-Aufruf verwenden, mit dem der Datensatz "Universal Containers" aktualisiert wird.
Workbench ist eine Suite aus Tools, welche die Interaktion mit Ihrer Salesforce-Organisation über die API ermöglichen. Die Sie REST-Anforderungen von jedem HTTP-Sender aus senden können, stehen Ihnen auch zahlreiche andere Tools zur Verfügung (z. B. cURL oder Postman). Da Workbench jedoch ein benutzerfreundliches Framework speziell für Salesforce-APIs bereitstellt, ist dies ein guter Einstieg, bis Sie in der Lage sind, eine ausgewachsene Integrationslösung zu schreiben.
- Melden Sie sich bei Ihrem Trailhead Playground an. Navigieren Sie in einem anderen Browserfenster zu Workbench.
- Wählen Sie als Umgebung Production aus.
- Wählen Sie als API-Version die höchste verfügbare Versionsnummer aus.
- Aktivieren Sie unbedingt das Kontrollkästchen I agree to the terms of service.
- Klicken Sie auf Login with Salesforce.
Daraufhin wird die Workbench-Startseite angezeigt. Bei diesem Modul verwenden wir nur eines der vielen Tools von Workbench, den REST Explorer.
Wählen Sie im oberen Menü
aus.Sie können User Interface API-Aufrufe vom REST Explorer aus durchführen, wie von jeder beliebigen anderen HTTP-Schnittstelle aus.
Für einen API-Aufruf geben Sie den Ressourcen-URI ein, wählen eine HTTP-Methode aus, fügen nach Bedarf Anforderungstext hinzu und klicken auf Execute.
/services/data/v50.0/ui-api/object-info
Die Antwort ist eine Liste aller Objekte, die die User Interface API und Ihr Trailhead Playground unterstützen.
Bearbeiten eines Datensatzes
Wenn in der Record Viewer-Anwendung ein Benutzer auf die Schaltfläche zum Erstellen eines Datensatzes klickt, werden in der Anforderung an /ui-api/record-ui/{recordIds} sowohl der View- als auch der Edit-Modus angefordert. Die JSON-Antwort enthält Layouts für jeden Modus, so dass die Anwendung über genügend Informationen verfügt, um ein Formular zu erstellen, mit dem Benutzer den Datensatz bearbeiten können, wenn sie sich dafür entscheiden.
let recordViewUrl = action.creds.instanceUrl + '/services/data/v50.0/ui-api/record-ui/' + action.recordId + '?formFactor=' + action.context.formFactor + '&layoutTypes=Full&modes=View,Edit';
Damit ein Benutzer einen Datensatz bearbeiten kann, zeigt die Anwendung ein Formular mit bearbeitbaren Feldern an. Wenn ein Benutzer auf Save klickt, stellt die Saga recordUpdater.js eine PATCH-Anforderung an die Ressource /ui-api/records/{recordId}, um die Aktualisierung durchzuführen.
let recordDataUrl = action.creds.instanceUrl + '/services/data/v50.0/ui-api/records/' + action.recordId;
Wir verwenden jetzt Workbench, um einen Datensatz zu aktualisieren und die Änderung anschließend in der Record Viewer-Anwendung und in Salesforce anzuzeigen. Zuerst benötigen wir die ID des Datensatzes, der aktualisiert werden soll.
"records": { "0010V00002JoU6hQAF": { "apiName": "Account", "childRelationships": {}, "eTag": "412642214dd7ef34eb3e2bae5e645dcc",
- Klicken Sie in Workbench auf .
- Geben Sie folgende Einstellungen ein:
- HTTP-Methode: PATCH
- Ressourcen-URI: /services/data/v50.0/ui-api/records/{recordId}
Ersetzen Sie {recordId} durch die Datensatz-ID von Universal Containers.
- Anforderungstext (Request Body):
{ "fields" : { "Website": "www.example.com", "Rating" : "Hot" } }
- Klicken Sie auf Execute (Ausführen).
- Kehren Sie zur Record Viewer-Anwendung zurück und klicken Sie auf View Record, um den Universal Containers-Datensatz neu zu laden.
Die Felder "Website" und "Rating" wurden geändert. Sie können die Änderung auch in Ihrer Salesforce-Organisation anzeigen.
Bearbeiten eines zusammengesetzten Felds
Das Aktualisieren zusammengesetzter Felder kann sich etwas schwieriger gestalten. Ein zusammengesetztes Feld gruppiert mehrere Felder mit einfachen Datentypen, wie beispielsweise Zahlen oder Zeichenfolgen, um komplexe Datentypen, wie beispielsweise Standorte oder Adressen, wiederzugeben. Ein zusammengesetztes Feld besteht aus Komponentenfeldern.
BillingAddress ist ein Beispiel für ein zusammengesetztes Feld. Seine Komponentenfelder sind BillingStreet, BillingCity, BillingState und BillingCountry. Die Werte im zusammengesetzten Feld und die Werte in den Komponentenfeldern sind beide denselben in Salesforce gespeicherten zugrunde liegenden Daten zugewiesen. Ihre Werte sind immer identisch.
Zusammengesetzte Felder sind schreibgeschützt. Um ein zusammengesetztes Feld zu bearbeiten, müssen Sie dessen Komponentenfelder aktualisieren.
"BillingAddress" : { "apiName" : "BillingAddress", "calculated" : false, "compound" : true, "compoundComponentName" : null, "compoundFieldName" : null, ...
"BillingCity": { "apiName": "BillingCity", "calculated": false, "compound": false, "compoundComponentName": "City", "compoundFieldName": "BillingAddress", ...
- Klicken Sie in Workbench auf .
- Geben Sie folgende Einstellungen ein:
- HTTP-Methode: PATCH
- Ressourcen-URI: /services/data/v50.0/ui-api/records/{recordId}
Ersetzen Sie {recordId} durch die Datensatz-ID von Universal Containers.
- Anforderungstext (Request Body):
{ "fields" : { "BillingPostalCode": "98112", "BillingState": "WA", "BillingCity": "Seattle", "BillingStreet" : "123 Main Street", "BillingCountry" : "USA" } }
- Klicken Sie auf Execute (Ausführen).
- Kehren Sie zur Record Viewer-Anwendung zurück und klicken Sie auf View Record, um den Universal Containers-Datensatz neu zu laden.
Sehen Sie sich den geänderten Datensatz in der Record Viewer-Anwendung an.
Im View-Modus lässt sich ein zusammengesetztes Feld gut als einzelnes Feld rendern.
Im Edit-Modus rendern Sie die Komponentenfelder, damit sie vom Benutzer geändert werden können. Um den Datensatz im Edit-Modus anzuzeigen, klicken Sie auf Edit.
ETags
Ein ETag ist eine HTTP-Kopfzeile, die eine Antwort eindeutig bezeichnet. Ihre Anwendung kann ein ETag mithilfe der HTTP-Anforderungskopfzeile If-None-Match an Salesforce zurückgeben.
Wenn der JSON-Code, den Salesforce zurücksenden wird, mit dem Ihnen vorliegenden Code übereinstimmt, erhalten Sie die Rückmeldung "HTTP 304", was bedeutet, dass sich nichts geändert hat und Ihre Anwendung keine weitere Nutzlast deserialisieren muss.
Der Einsatz von ETags reduziert Netzwerkverkehr und Datennutzung und verbessert die Performance Ihrer Anwendung. Er ist bei Nutzlasten mit Objekt- und Layout-Metadaten sinnvoll, da diese sich nicht oft ändern.
root:{} 5 items eTag:19d49d8dfba088456235a7cacc38138a layoutUserStates:{} 1 item layouts:{} 1 item objectInfos:{} 1 item records:{} 1 item
Wenn wir layouts, objectInfos und records in der JSON-Antwort einblenden, sehen wir, dass jede dieser verschachtelten Antworten ebenfalls eine eTag-Eigenschaft enthält. Das liegt daran, dass die UI API über Ressourcen verfügt, die jede dieser verschachtelten Antworten als Antworten der obersten Ebene zurückgeben. In einer aggregierten Nutzlast wie /ui-api/record-ui/{recordIds} verfügt jeder Block der Nutzlast über ein ETag.
- /ui-api/layout/{objectApiName}
- /ui-api/object-info/{objectApiName}
- /ui-api/records/{recordId}