Datenaustauschoptionen HTTP-API / REST-API

Datenaustauschoptionen HTTP-API / REST-API

Übersicht

Daten können bei der Anfrage (“HTTP-Request”) und / oder bei der Antwort (“HTTP-Response”) jeweils übergeben werden werden.

Ebenso ist ein reines Triggern des HTTP-Servers möglich, ohne dass Daten aus Objekten ausgetauscht werden.

Diese Wertübergaben können in der URI, im Header und im Body erfolgen, hierzu sind die passenden Einstellungen vorzunehmen und Objekte zu verknüpfen.

Untenstehend sind die verfügbaren Optionen aufgelistet.

FIRMWARE Die Funktion als HTTP-Server steht ab IP8 zur V 4.5 oder neuer zur Verfügung.

HTTP Request: Methoden, Content Type und Datentypen

  • HTTP Request - Methoden:

    • GET

    • POST

    • PUT

  • HTTP Request - Content Type (nur POST):

    • text/plain

    • application/json

    • application/x-www-form-urlencoded

  • HTTP Request - Datentypen:

    • Bool

    • Ganzzahl,

    • vorzeichenbehaftete Ganzzahl

    • Fließkomma

    • Text

    • Diese Datentypen können, auch gemischt, in form-urlencoded oder JSON Datenstrukturen eingebettet sein

HTTP Request: Wertübergaben in der URI

  • HTTP Request mit einzelnen oder mehreren Objektwerten in der URI:
    Es können einzelne oder mehrere Objektwerte in der URI übergeben werden. Hierzu ist der jeweilige Schlüssel und das Objekt anzugeben, dessen Werte übergeben werden sollen.

    • Übergabe innerhalb der URI (an festlegbarer Stelle) im Format Schlüssel=Objektwert

    • Übergabe als automatisch hinzugefügter Query-Parameter im Format Schlüssel=Objektwert

HTTP Request: Wertübergaben im Request Header

  • HTTP Request mit einzelnen oder mehreren Objektwerten im Header:
    Es können einzelne oder mehrere Objektwerte als Headerfelder übergeben werden. Hierzu ist der jeweilige Schlüssel (Bezeichnung des Headerfeldes) und das Objekt anzugeben, dessen Werte übergeben werden sollen.

HTTP Request: Wertübergaben Body (nur POST und PUT)

  • HTTP Request mit Übergabe einzelner Objektwert:
    Ein einzelner Objektwert kann per text/plain im Body übergeben werden.

  • HTTP Request mit Übergabe einzelner oder mehrerer Objektwerten (x-www-form-urlencoded):
    Es können einzelne oder mehrere Objektwerte übergeben werden, hierbei ist der jeweilige Schlüssel anzugeben sowie das Objekt, dessen Wert zusammen mit dem Schlüssel übergeben wird.
    Bei dieser Kodierung werden Schlüssel-Wert-Paare hintereinander durch das Subsystem automatisch in einen langen String geschrieben. Die Schlüssel-Werte-Paare sind voneinander mit ampersand (“&”) getrennt und der Schlüssel vom Wert mit einem Ist-Zeichen (“=”). Der String wird URL-encoded (“Prozentkodierung” ähnlich RFC 3986).

  • HTTP Request mit Übergabe einzelner oder mehrerer Objektwerten (application/json):
    Der Inhalt eines oder mehrerer Objektwerte kann per JSON Datenstruktur im Request Body an die Ressource gesendet werden. Die JSON Struktur darf dabei fast beliebig ineinander verschachtelt sein.

 

HTTP Request: Auslösung

Mehrere Auslöseoptionen erlauben die Steuerung des Zeitpunktes der Aussendung der Anfrage (“HTTP-Request”).

Mit jeder Auslösung kann nur ein Trigger (ein Aufruf ohne Daten), ein Objektwert oder auch mehrere Objektwerte zusammen an die Ressource gesendet werden.

  • Intervall Auslöser für HTTP Request:
    HTTP Requests lassen sich in regelmäßigen Intervallen auslösen. Dies kann mit bedingten Auslösern kombiniert werden.

  • Bedingte Auslöser für HTTP Request:
    HTTP Requests lassen sich durch Bedingungen, z.B. Wertänderung einzelner Objektwerte sowohl für die jeweilige einzelne Transaktionen als auch gemeinsam für die gesamte Transaktionsgruppe - sowie Kombinationen daraus - auslösen. Hierüber kann granular gesteuert werden, welche Objektwertänderungen einen HTTP Request auslösen und welche Objektwerte dabei übertragen werden. Dies kann mit zeitlichen Auslösern kombiniert werden.

 

HTTP Response: Content Type und Datentypen

  • HTTP Response Content Type:

    • text/plain

    • application/json

  • Dekodierbare Datentypen:

    • Bool

    • Ganzzahl,

    • vorzeichenbehaftete Ganzzahl

    • Fließkomma

    • Text
      -> Diese Datentypen können, auch gemischt, in JSON Datenstrukturen eingebettet sein

HTTP Response: Wertübernahme aus Body

  • HTTP Response mit Einzelwertübergabe:
    Einzelne Werte können per text/plain empfangen und an ein Objekt übergeben (und von dort beliebig weitergeleitet) werden.

  • HTTP Response mit Selektion mehrerer Werte aus JSON im Body:
    Beliebige Werte aus empfangenen JSON Datenstrukturen, auch mehrfach verschachtelt, können für die Zuweisung zu HTTP-/REST-API Objekten selektiert werden. Damit können Daten aus JSON Datenstrukturen in verschiedene Objekte vereinzelt und damit leicht gehandhabt werden. Siehe JSON Selektoren bei HTTP-API / REST-API

 

Eine umfangreiche Doku zum neuen Subsystem “HTTP-/REST-API als Server” gibt es auch im Forum unter [NEUHEIT] NEU: TWS nun auch als HTTP-/REST-API Server - ElabNET Technik Forum

 

*Erklärung zu "beliebig" und "keine Beschränkung": In der Firmware des Timberwolf Servers sind keine künstlichen Limits implementiert, die über sich technisch ergebende Grenzen hinaus gehen.
Technischen Grenzen sind z.B. die verfügbaren Bandbreiten der Bussysteme und Schnittstellen, die Fähigkeiten der angesprochenen Endgeräte, der Adressumfang und die Datentransportfähigkeiten der jeweiligen Protokolle, die Kompatibilität der jeweiligen Datentypen, die erlaubten Datenflussrichtungen sowie die sich aus der gesamten Konfiguration des Timberwolf Servers ergebende Systemlast.
Der Verzicht auf vorgegebene Beschränkungen bedeutet nicht, dass jede denkbare Konfiguration in jeder Kombination und in jedem Umfang möglich ist. Wir glauben an die Mündigkeit und das Verständnis der Nutzer und erlauben durch weitgehenden Verzicht auf vorgegebene Limits, die verfügbaren Systemressourcen des Timberwolf Servers und der angeschlossenen Geräte im selbst gewählten Umfang zu nutzen.