profacto bietet einen token-gesicherten Zugriff auf ausgewählte Tabellen und Felder mit sehr flexibler Architektur. Bei Wünschen für zusätzliche Tabellen, API-Sets oder als externer Entwickler sprich uns gerne an.
...
Symbole zum Vergleichen von Attribut und Value. Es gibt folgende Symbole:
Vergleich Symbol(e) Kommentar Ist gleich =, == Erhält passende Daten, unterstützt den Joker @, berücksichtigt weder Groß- und Kleinschreibung noch diakritische Zeichen. ===, IS Erhält passende Daten, bewertet @ als Standardzeichen und nicht als Joker, berücksichtigt weder Groß- und Kleinschreibung noch diakritische Zeichen. Ungleich zu #, != unterstützt den Joker (@) !==, IS NOT bewertet @ als Standardzeichen und nicht als Joker Kleiner als < Größer als > Kleiner als oder gleich <= Größer als oder gleich >= Enthalten in IN Erhält Daten, die mit mindestens einem Wert in einer Collection bzw. einem Satz Werte übereinstimmt Nicht enthalten in einer Anweisung NOT Klammern sind zwingend, wenn NOT vor einer Anweisung mit mehreren Operatoren verwendet wird Enthält Schlüsselwort % Schlüsselwörter lassen sich in Attributen vom Typ String oder Bild verwenden - Value: Wert zum Vergleichen mit dem aktuellen Wert der Eigenschaft.
Für eine Suche nach einem String innerhalb eines anderen String (eine Suche "Enthalten in") verwenden Sie den Joker (@) in value, um den zu suchenden String zu isolieren, zum Beispiel: "@Schmi@", um alle Schmid, Schmied, Schmitt und so weiter zu finden. - Für numerische Werte dient Punkt als Dezimaltrenner.
- Datumsangeben müssen im Format "YYYY-MM-DD" sein.
Bei einer Suche mit einem IN Vergleichsoperator muss value eine Collection sein bzw. Werte, die zum Typ des Attributspfads zwischen eckigen Klammern [] passen, getrennt durch Kommas (bei Strings müssen Anführungszeichen " mit "\" abschließen). LogicalOperator: verbindet mehrere Bedingungen in der Suche (optional). Es gibt folgende logische Operatoren (Sie können Name oder Symbol übergeben):
Konjunktion Symbol(e) AND &, &&, and OR |, ||, or - order by Attribut: Sie können eine Anweisung order by Attribute in der Suche hinzufügen, so dass die Ergebniswerte sortiert werden. Sie können mehrere Sortieranweisungen, durch Komma getrennt, verwenden, (z.B. order by Attribut1 desc, Attribut2 asc). Die Sortierung ist standardmäßig aufsteigend. Übergeben Sie 'desc' für absteigende Reihenfolge und 'asc' für aufsteigende Reihenfolge
...
Man sieht, daß trotzdem alle zulässigen Felder unterstützt werden, die Abfrage deswegen nicht komplett scheitert.
Beispiel api_get mit Bestellungen
Um sich alle Bestellungen abzuholen benötigt man einen Token für Bestellungen, die Tabelle Bestellungen und die auszugebenden Felder.
http://meinserver:8080/4DAction/api_get?token=C900BFE22DFF4B75917837006E247932&table=Bestellung&fields=BestellNr,Kurzbez,Bestelldatum,Bemerkung
Als Resultat erhält man alle Bestellungen die mit dem Token zugänglich sind:
"{"Error":[],"Bestellung":[{"BestellNr":130001,"Kurzbez":"WHG-Ahmerkamp GmbH - Warendorf","Bestelldatum":"0000-00-00","Bemerkung":""},{"BestellNr":130002,"Kurzbez":"Holzma - Calw-Holzbronn","Bestelldatum":"2015-07-08","Bemerkung":"\\rNeues Bauabnahmedatum: 07.07.15"}],"error":"finished"}"
Standard-Felder für die Tabelle "Bestellung" (Werden keine Felder angegeben, werden die Folgenden automatisch als Abruf-Felder bestimmt)
BestellNr, Bestelldatum, AuftragsNr
Verbotene Felder für das Abrufen der Tabelle "Bestellung"
PKUUID_104
Beispiel api_get mit Bestellpositionen
Das vorher gegangene Beispiel mit den Bestellungen nutzen wir um die Bestellpositionen für eine Bestellung abzurufen.
Dafür müssen wir den Parameter query dem API-Aufruf mitgeben. An dieser Stelle möchten wir alle Bestellpositionen für die Bestellung mit der BestellNr. 130076 abrufen.
Wir ändern die Tabelle auf BestellPos und suchen uns die entsprechenden Felder die wir in unserer Response ausgegeben bekommen möchten (e.g. BestellNr, ArtikelNr,Bestellmenge).
http://meinserver:8080/4DAction/api_get?token=C900BFE22DFF4B75917837006E247932&query=BestellNr=130076&table=BestellPos&fields=BestellNr,ArtikelNr,BestellMenge
Wir erhalten die dazugehörigen Positionen in einem JSON-Objekt:
{"Error":[],"BestellPos":[{"BestellNr":130076,"ArtikelNr":"KF-AH-19","BestellMenge":32},{"BestellNr":130076,"ArtikelNr":"KF-AH-19","BestellMenge":2}],"error":"finished"}
Standard-Felder für die Tabelle "BestellPos" (Werden keine Felder angegeben, werden die Folgenden automatisch als Abruf-Felder bestimmt)
BestellNr, ArtikelNr, LfdNr
BestellNr, ArtikelNr, LfdNr
Pagination
Mittels der Pagination kann man sich die Daten in einzelnen Blöcken darstellen lassen.
Dafür werden die Parameter zum api_get-Befehl übergeben:
Parameter | Format | Default |
---|---|---|
offset | Integer | 0 |
limit | Integer | 0 |
offset definiert ab welchem Datensatz weitergelesen werden soll
limit wiederum begrenzt die Anzahl der Datensätze die ausgegeben werden sollen
Da jeder neue Abschnitt auch die Daten neu liest kann es zu Verschiebungen kommen, wenn im Verlauf einer Abfrage Daten in einer bestimmten Ordnung hinzugefügt oder gelöscht werden.
In der Rückmeldung wird immer angeben, wieviele records vorhanden sind:
{"total_in_query":25,"offset":0}
Fehlermeldungen
"error":"" - immer am Anfang der JSON-Response
"errorMsg":"" - immer am Ende der JSON-Response
"structure_access_info":[] - vor den Nutzdaten
Neue Daten schreiben mit api_put_*
...