Verwenden der REST-API
Lernziele
- Anmelden bei der Anwendung Postman und Navigieren zum Ordner "REST" in "Salesforce API Collection"
- Verwenden der Ressource "GET SObject Describe"
- Erstellen eines Accounts unter Verwendung der REST-API
- Ausführen einer Abfrage mit der REST-API
REST-Ressourcen und -Methoden
- Abrufen von zusammenfassender Informationen über die API-Versionen, die Ihnen zur Verfügung stehen
- Abrufen detaillierter Informationen über ein Salesforce-Objekt wie z. B. Account, Benutzer oder ein benutzerdefiniertes Objekt
- Durchführen einer Abfrage oder Suche
- Aktualisieren oder Löschen von Datensätzen
Eine REST-Anforderung besteht aus vier Komponenten: einem Ressourcen-URI, einer HTTP-Methode, Anforderungs-Headern und einem Anforderungstext. Anforderungs-Header geben Metadaten für die Anforderung an. Der Anforderungstext gibt, falls notwendig, Daten für die Anforderung an. Wenn keine Daten angegeben werden müssen, wird der Anforderungstext weggelassen.
Bevor Sie fortfahren
Sie verwenden jetzt Postman, um einige API-Aufrufe zu erstellen. Sie können REST-Anforderungen über einen beliebigen HTTP-Absender stellen. Und Postman ist nur eines von vielen Tools, die Sie für die Interaktion mit Ihrer Salesforce-Organisation über die API einsetzen können.
Der erste Schritt besteht darin, einen neuen Trailhead Playground zu erstellen, ihn mit der Anwendung Postman zu verbinden, CORS (Cross-Origin Resource Sharing) einzurichten und einen Fork zur Salesforce API Collection zu erstellen. Absolvieren Sie hierfür Schnelleinstieg: Verbinden von Postman mit Salesforce.
Sie können wie bei jeder anderen HTTP-Schnittstelle REST-API-Aufrufe an Ihren Trailhead Playground richten, indem Sie die Ressourcen in der Anwendung Postman unter "Salesforce API Collection" im Ordner "REST" verwenden. Wenn Sie in der Salesforce API Collection eine Ressource auswählen, wird der URI im oberen Bereich des Hauptfensters angezeigt.
Beschreiben des Objekts "Account"
Sehen wir uns nun an, wie dies funktioniert.
Sie verwenden die Ressource "SObject Describe". Diese Ressource gibt in Kombination mit der GET-Methode Metadaten über ein Objekt und seine Felder zurück. Lassen Sie uns das Objekt "Account" beschreiben.
- Wählen Sie in "Collections" Ihren Fork der Salesforce APIs Collection aus.
- Klicken Sie auf den Ordner REST.
- Klicken Sie auf SObject.
- Klicken Sie auf GET SObject Describe.
- Öffnen Sie im Hauptbereich die Registerkarte Params (Parameter).
- Geben Sie unter "Path Variables" (Pfadvariablen) in der Zeile SOBJECT_API_NAME der Spalte VALUE
Account
ein.
Ehe Sie sich die Ergebnisse Ihrer Abfrage ansehen, lassen Sie uns kurz den URI dieser Ressource aufschlüsseln.
- GET: die für diesen API-Aufruf verwendete HTTP-Methode.
- {{_endpoint}}: die Stelle, an der die Anforderung erfolgt. In diesem Fall haben Sie den URL Ihres Trailhead Playgrounds in das Feld "_endpoint" in den Variablen zum Herstellen einer Verbindung mit Salesforce eingefügt.
- /services/data: gibt an, dass Sie eine REST-API-Anforderung stellen.
- /v {{version}}: die API-Versionsnummer. Die doppelten geschweiften Anführungszeichen bedeuten, dass diese Einstellung als Variable festgelegt werden kann.
- /sobjects: gibt an, dass wir auf eine Ressource unter der Gruppierung "sObject" zugreifen.
- /:SOBJECT_API_Name: das sObject, für das die Aktion erfolgt, in diesem Fall "Account".
- /describe: eine Aktion, in diesem Fall eine Describe-Anforderung.
Gut gemacht, Kapitän! Die Metadaten für "Account" werden auf dem Bildschirm angezeigt und Postman hat die Antwort ansehnlich formatiert. Wenn Sie die JSON-Antwort in Rohformat sehen möchten, klicken Sie auf Raw (Rohformat).
Die Metadaten für "Account" werden im JSON-Format angezeigt. Da die REST-API sowohl JSON als auch XML unterstützt, ändern wir nun den Anforderungs-Header, damit wir eine XML-Antwort erhalten.
- Klicken Sie im Anforderungsfenster auf Headers (Header).
- Fügen Sie einen neuen Header mit
Accept
als Key (Schlüssel) undapplication/xml
als Value (Wert).
Ihre Anforderungs-Header sehen nun wie folgt aus.
3. Klicken Sie auf Send (Senden).
Die XML-Rohantwort wird zurückgegeben. Hurra!
Erstellen eines Accounts
Jetzt erstellen wir ein Account mit der SObject-Ressource und der POST-Methode.
So erstellen Sie einen Account:
- Wählen Sie unter REST erst SObject und dann POST SObject Create aus.
- Öffnen Sie die Registerkarte Params (Parameter).
- Geben Sie unter "Path Variables" (Pfadvariablen) in der Zeile SOBJECT_API_NAME der Spalte VALUE
Account
ein. - Öffnen Sie die Registerkarte Body (Textkörper).
- Ersetzen Sie den Textkörper durch diesen Code:
{ "Name": "Captain Bly’s Finest Treasure Chests", "ShippingCity": "Lisbon" }
6. Klicken Sie auf Save (Speichern).
7. Klicken Sie auf Send (Senden).
Bei "success: true" wurde der Account mit der zurückgegebenen ID erstellt.
Lassen Sie uns jetzt spaßeshalber einen zweiten Account erstellen, ohne einen Accountnamen anzugeben.
- Ersetzen Sie den Text im Anforderungstextbereich durch folgenden Text.
{ "ShippingCity" : "Melbourne" }
2. Klicken Sie auf Send (Senden).
Oje. Haben Sie die Antwort "Required fields are missing: [Name]" (Pflichtfelder fehlen: [Name]) erhalten?
Da "Name" ein Pflichtfeld beim Erstellen eines Accounts ist, hat der Server die Anforderung nicht verarbeitet und eine Fehlermeldung zurückgegeben. Glücklicherweise sind alle Informationen, die zum Beheben des Fehlers notwendig sind, in der Fehlerantwort angegeben. Geben Sie nun im Anforderungstext den Accountnamen an: Pirate Pete’s Parrot Pellets
- Ersetzen Sie den Text im Anforderungstextbereich durch folgenden Text.
{ "Name": "Pirate Pete's Parrot Pellets", "ShippingCity": "Melbourne" }
2. Klicken Sie auf Save (Speichern).
3. Klicken Sie auf Send (Senden).
Geschafft!
Ausführen einer Abfrage
Stellen wir uns nun einmal vor, Sie oder ein anderer Benutzer haben Hunderte Accounts erstellt. Sie möchten die Namen aller Accounts feststellen, bei denen der Ort in der Lieferanschrift "Melbourne" lautet. Sie können mithilfe der Ressource "Query" eine SOQL-Abfrage auszuführen, um genau wie bei einer angepassten Schatzkarte die gewünschten Datensätze zu finden.
- Wählen Sie unter "REST" GET Query aus.
- Öffnen Sie die Registerkarte Params (Parameter).
- Fügen Sie unter "Query Params" (Abfrageparameter) in der Zeile "q" in der Spalte "VALUE" den folgenden Text ein.
SELECT Name From Account WHERE ShippingCity = 'Melbourne'
4. Klicken Sie auf Save (Speichern).
5. Klicken Sie auf Send (Senden).
Die Abfrage gibt den Account zurück, den Sie zuvor erstellt haben: Pirate Pete’s Parrot Pellets. Gut gemacht, Kapitän!
Sehen wir uns die Attribute an. Neben "url" befindet sich der Ressourcen-URI des Accounts, der zurückgegeben wurde. Ihre Antwort sieht etwa wie folgt aus.
Wenn Sie eine Integrationslösung schreiben, können Sie diesen URI aus der Antwort verwenden, um auf weitere Details über diesen Account zuzugreifen.
Beispiele für Node.js und Ruby
Node.js-Beispiel mit JSforce
const jsforce = require("jsforce");const conn = new jsforce.Connection({ // you can change loginUrl to connect to sandbox or prerelease env. // loginUrl : "https://test.salesforce.com" }); // Log in with basic SOAP login (see documentation for other auth options) conn.login( process.env.USERNAME, process.env.PASSWORD + process.env.SECURITY_TOKEN, (err, res) => { if (err) { return console.error("Failed to log in to Salesforce: ", err); } console.log("Successfully logged in!"); // Run a SOQL query conn.query("SELECT Id, Name FROM Account LIMIT 5", (err, result) => { if (err) { return console.error("Failed to run SOQL query: ", err); } // Display query results const { records } = result; console.log(`Fetched ${records.length} records:`); records.forEach(record => { console.log(`- ${record.Name} (${record.Id})`); }); }); } );
Ruby-Beispiel mit Restforce
require 'restforce' # create the connection with the Salesforce connected app client = Restforce.new :username => ENV['USERNAME'], :password => ENV['PASSWORD'], :security_token => ENV['SECURITY_TOKEN'], :client_id => ENV['CLIENT_ID'], :client_secret => ENV['CLIENT_SECRET'] # execute the query accounts = client.query("select id, name from account limit 5") # output the account names accounts.each do |account| p account.Name end