Zum Inhalt springen

REST-API-Empfehlungen im Jitterbit App Builder

Einführung

Diese Seite bietet Entwicklern, die eine mit dem App Builder kompatible REST-API implementieren möchten, Orientierung. Es wird davon ausgegangen, dass der Entwickler darauf fokussiert ist, einen CRUD-REST-Dienst zu erstellen. Viele der Prinzipien, die in einer CRUD-API verwendet werden, sind auch auf andere APIs anwendbar. Eine CRUD-API wird jedoch wahrscheinlich die umfassendsten Anforderungen haben, die mit dem App Builder interagieren (Seiten, Suchen, Filtern usw.).

Umschlag

Die Anforderungs- und Antwortkörper der App Builder REST-API sind in einem Umschlag eingewickelt. Umschläge ermöglichen es, Daten zu einem API-Endpunkt und von diesem außerhalb der Nutzlast des Endpunkts zu senden.

Anforderungs-Körperumschlag

Der Anforderungs-Körper der App Builder REST-API enthält diese Umschlag-Eigenschaften:

Eigenschaftsname Beschreibung
item Die Nutzlast des Endpunkts.

Beispiel-JSON

{
  "item": {}
}

Antwort-Körperumschlag

Der Antwort-Körper der App Builder REST-API enthält diese Umschlag-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 Endpunkt.
item oder items Die Nutzlast des Endpunkts - entweder ein einzelnes Element oder eine Sammlung von Elementen.

Beispiel-JSON

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

Validierungen

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

Eigenschaftsname Beschreibung
message Die Validierungsnachricht.
severity Die Schwere der Validierung:
  • error
  • warning
  • information
field Das durch die Validierung referenzierte Feld.

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 Ihr REST-Dienst unterstützen sollte. Einige Dienste entscheiden sich natürlich dafür, bestimmte Methoden nicht zu implementieren (z. B. würde ein schreibgeschützter Dienst nur die Methoden "Get Single"/"Get Many" implementieren).

Einzelnes Element abrufen

Die Get Single-Operation gibt einen einzelnen Datensatz zurück. Der Bezeichner für den Datensatz ist 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"
  }
}

Viele Elemente abrufen

Die Get Many-Operation gibt viele Datensätze für eine Sammlung zurück. Oft wird diese Operation zusammen mit der 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 es dem App Builder, die Anzahl der Datensätze in der Benutzeroberfläche anzuzeigen und die Benutzeroberfläche darüber zu informieren, wann das Ende der Sammlung erreicht ist.

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

Die Create-Operation erstellt einen neuen Datensatz. Der Bezeichner für den Datensatz befindet sich im JSON-Body.

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 Zeitstempel für die Erstellung des Datensatzes).

HTTP-Methode

POST

Beispiel-URL

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

Beispiel-Anforderungs-Body JSON

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

Beispiel-Antwort-Body JSON

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

Aktualisieren

Die Update-Operation aktualisiert einen vorhandenen Datensatz. Der Bezeichner für den Datensatz ist 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 (wie z. B. ein Zeitstempel für die Aktualisierung des Datensatzes).

HTTP-Methode

  • PUT: Wird für ein vollständiges Update verwendet. Alle Parameter des Datensatzes müssen angegeben werden.

  • POST: Wird für ein partielles Update verwendet. Nur die erforderlichen Parameter des Datensatzes müssen angegeben werden.

Beispiel-URL

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

Beispiel-Anforderungsinhalt JSON

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

Beispiel-Antwortinhalt JSON

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

Löschen

Die Löschoperation entfernt einen Datensatz. Der Bezeichner für den Datensatz wird in der URL angegeben. Es muss kein Anforderungsinhalt für ein DELETE gesendet werden.

HTTP-Methode

DELETE

Beispiel-URL

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

Beispiel-Antwortinhalt JSON

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

Abfrageparameter

Viele abrufen

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

Paging

Für Sammlungen, die viele Datensätze enthalten, ist es oft notwendig, Paging zu unterstützen. Um Paging zu unterstützen, definiert der App Builder die folgenden Parameter:

Abfrageparameter Beschreibung Beispiel
$limit Die maximale Anzahl von Datensätzen, die in einer Anfrage abgerufen werden sollen. $limit=10
$offset Ab welchem Datensatzoffset der Abruf beginnen soll. Offsets sind nullbasiert, sodass die Angabe von 0 den ersten Datensatz in der Sammlung abruft. $offset=10
$count Ein Boolean, das angibt, ob eine Sammlungsanzahl zurückgegeben werden soll. Im App Builder wird dieser Parameter standardmäßig als falsch betrachtet. $count=true

Sortierung

App Builder unterstützt die einfache Sortierung von Feldern.

Abfrageparameter Beschreibung Beispiel
$sort Eine durch Kommas getrennte Liste von Feldnamen, nach denen sortiert werden soll. Präfixieren Sie den Feldnamen mit einem Minuszeichen (-), um das Feld in absteigender Reihenfolge zu sortieren. Im bereitgestellten Beispiel wird die Sammlung nach Land, absteigend, und companyName, aufsteigend, sortiert. $sort=-country,companyName

Filterung

App Builder bietet Unterstützung für eine Abfragefilterzeichenfolge. Die Abfragefilterzeichenfolge unterstützt eine Teilmenge der OData 4.0 Abfragezeichenfolgenspezifikation. Für String-Vergleiche können Platzhalter mit dem Zeichen % angegeben werden.

Abfrageparameter Beschreibung Beispiel
$filter Eine OData 4.0-Stil Abfragezeichenfolge, die Daten filtert $filter=country eq 'united%'
Operatoren
Vergleich
Operator Beschreibung Beispiel
eq Entspricht dem Wert. categoryId eq 42
neq Entspricht nicht 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 Entspricht einem beliebigen Wert in der Liste. categoryId in (1, 2, 3)
Logisch
Operator Beschreibung Beispiel
und Logisches UND price gt 100 and categoryId in (1,2,3)
Einschränkungen
  • Keine arithmetischen Operatoren.

  • Keine oder/nicht logischen Operatoren.

  • Keine Gruppierungsoperatoren.

  • Keine Abfragefunktionen.

  • Keine Parameter-Aliasnamen.

Der App Builder bietet einen Mechanismus, um nach Datensätzen in einer Sammlung zu suchen. Diese Suche erfolgt über alle durchsuchbaren Felder des Datensatzes.

Standardmäßig fügt der App Builder Wildcards am Anfang und Ende der Suchzeichenfolge hinzu.

Abfrageparameter Beschreibung Beispiel
$q Eine Suchzeichenfolge, die auf alle durchsuchbaren Spalten eines Datensatzes angewendet wird. $q=hello

Typkonventionen

JSON-Typen

Als allgemeine Regel sollten Entwickler die nativen integrierten JSON-Typen bevorzugen. Der App Builder mappt automatisch native JSON-Typen, sodass die direkte Verwendung von Zahlen, Booleans, Strings und Nullwerten empfohlen wird.

Daten

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

Versionierung

Um zukünftige Inkompatibilitäten zwischen REST-API-Versionen zu behandeln, enthält der 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 die Standardwerte eines Datensatzes zurückzugeben. Dies wird im Voraus verwendet, um einen Datensatz zu erstellen, wenn einige Daten möglicherweise vom REST-Server vorausgefüllt werden.

HTTP-Methode

  • GET

  • POST

Beispiel-URL

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

Beispiel-Antwort-Body JSON

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

JSON - Umwandlung relationaler Tabellen

App Builder bietet einen Mechanismus zur Umwandlung zwischen der internen relationalen Tabellenrepräsentation von Daten und dem von REST-Endpunkten erwarteten JSON.

Arrays in Tabellen

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

Daher würde die folgende Umwandlung für einen Endpunkt namens "customers(get)" gelten:

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
}

Ergebnisstruktur der Tabelle

customers(get)

Anzahl Nachricht Status
2 Beispielnachricht 200

customers(get)/items

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

Daten schreiben

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

Daher sollte die Nutzung von JSON-Arrays, wo immer möglich, minimiert oder das Schreiben der Arrays in einem Objekt in einem separaten REST-API-Endpunkt unterstützt werden.

Ein "Kunden"-Objekt kann beispielsweise mehrere Adressen enthalten. Ein Endpunkt zum Schreiben des Kundenobjekts und ein weiterer Endpunkt zum Schreiben der Adressen ermöglichen es App Builder, einfacher mit Ihrer REST-API zu integrieren.