Zum Inhalt springen

REST-API-Empfehlungen in Jitterbit App Builder

Einführung

Diese Seite bietet Orientierung für Entwickler, die eine mit App Builder kompatible REST-API implementieren möchten. Es wird davon ausgegangen, dass sich der Entwickler auf die Erstellung eines CRUD-REST-Service konzentriert. Viele der in einer CRUD-API verwendeten Prinzipien sind auf andere APIs anwendbar. Eine CRUD-API wird jedoch wahrscheinlich die umfassendsten Anforderungen haben, die mit App Builder interagieren (Paginierung, Suche, Filterung usw.).

Envelope

Die Request- und Response-Bodies der App Builder REST API werden in einem Envelope verpackt. Envelopes ermöglichen es, Daten außerhalb der Endpoint-Payload zu und von einem API-Endpoint zu senden.

Request-Body-Envelope

Der Request-Body der App Builder REST API enthält diese Envelope-Eigenschaften:

Eigenschaftsname Beschreibung
item Die Endpoint-Payload.

Beispiel-JSON

{
  "item": {}
}

Response-Body-Envelope

Der Response-Body der App Builder REST API enthält diese Envelope-Eigenschaften:

Eigenschaftsname Beschreibung
message Die Erfolgs- oder Fehlermeldung für das Ereignis.
status Dies ist der (duplizierte) HTTP-Statuscode.
validations Ein Array von Validierungsfehlern/-warnungen für den aufgerufenen Endpoint.
item oder items Die Endpoint-Payload – entweder ein einzelnes Element oder eine Elementsammlung.

Hinweis

Ohne explizite Außerkraftsetzung gibt die REST API von App Builder standardmäßig HTTP-Statuscodes basierend auf dem Ergebnis der Anfrage zurück: beispielsweise 200 für eine erfolgreiche Anfrage, 400 für einen Validierungsfehler, 401 für ungültige Anmeldedaten oder 404 für eine ungültige URL, z. B. eine Anfrage an einen nicht vorhandenen Endpoint. Je nach Szenario können andere Standardstatuscodes gelten.

Tipp

Ab App Builder 4.65 kann ein Script-Plugin den StatusCode der Response unabhängig voneinander überschreiben (siehe HttpResponse), sodass die status-Eigenschaft des Envelope und der tatsächlich zurückgegebene HTTP-Statuscode unterschiedlich sein können. Um beide synchron zu halten, aktualisiere den Response-Body aus dem gleichen Script, das StatusCode setzt.

Beispiel-JSON

{
  "message": "",
  "status": 200,
  "validations": [],
  "items": []
}

Validierungen

Wenn Fehler auftreten, wird ein Validierungsobjekt zum Validierungsarray im Response-Envelope hinzugefügt. Das Validierungsobjekt hat die folgenden Eigenschaften:

Eigenschaftsname Beschreibung
message Die Validierungsmeldung.
severity Der Schweregrad der Validierung:
  • error
  • warning
  • information
field Das Feld, auf das sich die Validierung bezieht.

Beispiel-JSON

{
  "message": "",
  "status": 400,
  "validations": [
    {
      "message": "CustomerId is mandatory.",
      "severity": "error",
      "field": "customerId"
    },
    {
      "message": "CompanyName is mandatory.",
      "severity": "error",
      "field": "companyName"
    }
  ],
}

Kernoperationen

Dies sind die grundlegenden Operationen, die dein REST-Service unterstützen sollte. Einige Services werden natürlich bestimmte Methoden nicht implementieren (z. B. würde ein schreibgeschützter Service nur Get Single/Get Many-Methoden implementieren).

Einzelnen Datensatz abrufen

Die Operation „Get Single" gibt einen einzelnen Datensatz zurück. Die Kennung für den Datensatz wird in der URL angegeben.

HTTP-Methode

GET

Beispiel-URL

https://example.com/rest/v1/sales/customers/b603b276-a9bf-4328-88ff-8994176c38d1

Beispiel-JSON

{
  "item": {
    "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
    "name": "John Henry",
    "address": "130 Plutonium Drive"
  }
}

Mehrere Datensätze abrufen

Die Operation „Get Many" gibt mehrere Datensätze für eine Sammlung zurück. Diese Operation wird häufig zusammen mit Paginierung verwendet, um eine Sammlung von Datensätzen zu durchsuchen.

Wenn möglich, sollte eine Anzahl der Datensätze in der Sammlung zurückgegeben werden. Dies ermöglicht App Builder, die Datensatzanzahl in der Benutzeroberfläche anzuzeigen und die Benutzeroberfläche darüber zu informieren, wenn das Ende der Sammlung erreicht wurde.

HTTP-Methode

GET

Beispiel-URL

https://example.com/rest/v1/sales/customers

Beispiel JSON

{
  "count": 2,
  "items": [
    {
      "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
      "name": "John Henry",
      "address": "130 Plutonium Drive"
    },
    {
      "customerId": "9775de33-08fc-4cd2-98ef-d91f3d5355b1",
      "name": "Sally Keith",
      "address": "4500 Neutrino Road"
    }
  ],
  // envelope properties
}

Erstellen

Der Vorgang „Erstellen" erstellt einen neuen Datensatz. Die Kennung für den Datensatz befindet sich im JSON-Text.

Beachten Sie, dass der gesamte Datensatz in der Antwort zurückgegeben wird. Dies ist nützlich in Fällen, in denen einige Felder vom Server erstellt oder aktualisiert werden (z. B. ein Datensatz-Erstellungszeitstempel).

HTTP-Methode

POST

Beispiel-URL

https://example.com/rest/v1/sales/customers

Beispiel-Anforderungstext JSON

{
  "item": {
    "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
    "name": "John Henry",
    "address": "130 Plutonium Drive"
  }
}

Beispiel-Antworttexttext JSON

{
  "item": {
    "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
    "name": "John Henry",
    "address": "130 Plutonium Drive"
  }
  // envelope properties
}

Aktualisieren

Der Vorgang „Aktualisieren" aktualisiert einen vorhandenen Datensatz. Die Kennung für den Datensatz wird in der URL angegeben.

Beachten Sie, dass der gesamte Datensatz in der Antwort zurückgegeben wird. Dies ist nützlich in Fällen, in denen einige Felder vom Server erstellt oder aktualisiert werden (z. B. ein Datensatz-Aktualisierungszeitstempel).

HTTP-Methode

  • PUT: Wird für eine vollständige Aktualisierung verwendet. Alle Parameter des Datensatzes müssen angegeben werden.

  • POST: Wird für eine teilweise Aktualisierung verwendet. Nur erforderliche Parameter des Datensatzes müssen angegeben werden.

Beispiel-URL

https://example.com/rest/v1/sales/customers/b603b276-a9bf-4328-88ff-8994176c38d1

Beispiel-Anforderungstext JSON

{
  "item": {
    "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
    "name": "John Henry",
    "address": "130 Plutonium Drive"
  }
}

Beispiel-Antworttextkörper JSON

{
  "item": {
    "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
    "name": "John Henry",
    "address": "130 Plutonium Drive"
  }
  // envelope properties
}

Löschen

Der Löschvorgang löscht einen Datensatz. Die Kennung für den Datensatz wird in der URL angegeben. Für einen DELETE muss kein Anforderungstext gesendet werden.

HTTP-Methode

DELETE

Beispiel-URL

https://example.com/rest/v1/sales/customers/b603b276-a9bf-4328-88ff-8994176c38d1

Beispiel-Antworttextkörper JSON

{
  "item": {
    "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
    "name": "John Henry",
    "address": "130 Plutonium Drive"
  }
}

Abfrageparameter

Mehrere abrufen

Auf Sammlungsebene sollte der REST-Endpunkt die folgenden Funktionen unterstützen.

Paginierung

Bei Sammlungen mit vielen Datensätzen ist es oft erforderlich, Paginierung zu unterstützen. Um Paginierung zu unterstützen, definiert App Builder die folgenden Parameter:

Abfrageparameter Beschreibung Beispiel
$limit Die maximale Anzahl der Datensätze, die in einer Anfrage abgerufen werden sollen. $limit=10
$offset Ab welchem Datensatzoffset der Abruf beginnen soll. Offsets sind nullbasiert, daher wird durch Angabe von 0 der erste Datensatz in der Sammlung abgerufen. $offset=10
$count Ein boolescher Wert, der angibt, ob eine Sammlungsanzahl zurückgegeben werden soll. In App Builder wird dieser Parameter standardmäßig als falsch betrachtet. $count=true

Sortierung

App Builder kann einfaches Sortieren von Feldern unterstützen.

Abfrageparameter Beschreibung Beispiel
$sort Eine durch Kommas getrennte Liste von Feldnamen zum Sortieren. Stellen Sie dem Feldnamen einen Bindestrich (-) voran, um das Feld in absteigender Reihenfolge zu sortieren. Im bereitgestellten Beispiel wird die Sammlung nach Land (absteigend) und Unternehmensname (aufsteigend) sortiert. $sort=-country,companyName

Filterung

App Builder unterstützt Abfragefilterstränge. Der Abfragefilterstrang unterstützt eine Teilmenge der OData 4.0-Abfragestrang-Filterspezifikation. Bei Stringvergleichen können Platzhalter mit dem Zeichen % angegeben werden.

Abfrageparameter Beschreibung Beispiel
$filter Ein OData 4.0-Abfragestrang zum Filtern von Daten $filter=country eq 'united%'
Operatoren
Vergleich
Operator Beschreibung Beispiel
eq Gleich dem Wert. categoryId eq 42
neq Nicht gleich dem Wert. categoryId neq 42
gt Größer als der Wert. price gt 100
lt Kleiner als der Wert. price lt 100
ge Größer als oder gleich dem Wert. price ge 100
le Kleiner als oder gleich dem Wert. price le 100
in Stimmt mit einem Wert in der Liste überein. categoryId in (1, 2, 3)
Logisch
Operator Beschreibung Beispiel
and Logisches UND price gt 100 and categoryId in (1,2,3)
Einschränkungen
  • Keine arithmetischen Operatoren.

  • Keine logischen Operatoren „or" oder „not".

  • Keine Gruppierungsoperatoren.

  • Keine Abfragefunktionen.

  • Keine Parameteraliasnamen.

App Builder bietet einen Mechanismus zur Suche nach Datensätzen in einer Sammlung. Diese Suche wird über alle durchsuchbaren Felder des Datensatzes durchgeführt.

App Builder fügt dem Suchstrang standardmäßig Platzhalter am Anfang und Ende hinzu.

Abfrageparameter Beschreibung Beispiel
$q Ein Suchstrang, der auf alle durchsuchbaren Spalten eines Datensatzes angewendet wird. $q=hello

Typkonventionen

JSON-Typen

Grundsätzlich sollten Entwickler die nativen integrierten JSON-Typen bevorzugen. App Builder ordnet native JSON-Typen automatisch zu, daher wird die direkte Verwendung von Zahlen, booleschen Werten, Strings und Nullwerten empfohlen.

Daten

App Builder codiert Daten im ISO 8601-Format. Alle Daten werden in UTC serialisiert.

Versionierung

Um zukünftige Inkompatibilitäten zwischen REST-API-Versionen zu handhaben, enthält App Builder eine Versionsnummer direkt in der REST-URL.

Beispiel-URL

https://example.com/rest/v1/...

Optionale Operationen

Weitere Operationen, die für eine CRUD-REST-API nützlich sein können.

Neu

Die neue Operation wird verwendet, um Datensatzvorgaben zurückzugeben. Dies wird vor dem Erstellen eines Datensatzes für Fälle verwendet, in denen einige Daten vom REST-Server vorausgefüllt werden können.

HTTP-Methode

  • GET

  • POST

Beispiel-URL

https://example.com/rest/v1/sales/customers(new)

Beispiel-Antworttextkörper JSON

{
  "item": {
    "customerId": null,
    "daysActive": 0
  }
  // envelope properties
}

JSON – Konvertierung relationaler Tabellen

App Builder bietet einen Mechanismus zur Konvertierung zwischen der internen relationalen Tabellenrepräsentation von Daten und dem JSON, das von REST-Endpunkten erwartet wird.

Arrays in Tabellen

Jedes Array in einer JSON-Struktur wird als separate relationale Tabelle in App Builder betrachtet.

Daher würde die folgende Konvertierung auf einen Endpoint namens "customers(get)" angewendet:

customers(get) JSON

{
  "count": 2,
  "message": "Sample message",
  "status": 200,
  "items": [
    {
      "customerId": "b603b276-a9bf-4328-88ff-8994176c38d1",
      "name": "John Henry",
      "address": "130 Plutonium Drive"
    },
    {
      "customerId": "9775de33-08fc-4cd2-98ef-d91f3d5355b1",
      "name": "Sally Keith",
      "address": "4500 Neutrino Road"
    }
  ],
  // envelope properties
}

Resultierende Tabellenstruktur

customers(get)

Count Message Status
2 Sample message 200

customers(get)/items

customerid name address
9775de33-08fc-4cd2-98ef-d91f3d5355b1 Sally Keith 4500 Neutrino Road
b603b276-a9bf-4328-88ff-8994176c38d1 John Henry 130 Plutonium Drive

Daten schreiben

App Builder unterstützt derzeit nur das Schreiben in eine einzelne Tabelle während eines Events. Da jedes JSON-Array als separate Tabelle betrachtet wird, wird das Schreiben eines gesamten Objekts, das mehrere Arrays umfasst, in einem einzelnen App Builder-Event möglicherweise nicht unterstützt.

Daher sollte man die Verwendung von JSON-Arrays wo möglich minimieren oder das Schreiben der Arrays in einem Objekt in einem separaten REST-API-Endpoint unterstützen.

Ein "customer"-Objekt kann beispielsweise mehrere Adressen enthalten. Ein Endpoint zum Schreiben des customer-Objekts und ein weiterer Endpoint zum Schreiben der Adressen ermöglichen es App Builder, sich leichter in die REST-API zu integrieren.