FileMaker cURL JSON zu eigenem Webserver senden

Mit FileMaker 16 ist es möglich cURL-Optionen mit nativen Bordmitteln zu nutzen.

Wie man ein JSON von einem Webserver abholt, haben wir schon in einem früheren Tutorial gezeigt. In diesem Artikel geht es darum, ein JSON zu einem Webserver zu schicken.

Auf unserer Homepage findet Ihr unter http://fm-tutorial.de/api/json/json_check.php ein PHP-Script, an das Ihr euer JSON senden könnt.

Wenn Ihr auf den Link klickt, erscheint ein JSON:

Dieses PHP-Script dient als kleine API z.B. zur eurer Homepage, Webshop, etc.

Hier in unserem Beispiel-PHP-Script wird ein Token „fm-tutorial.de“ im JSON erwartet. Sollte kein gültiger Token im JSON enthalten sein, wird obige Meldung mit dem HTTP-Code 500 ausgegeben. Da ich über einen ganz gewöhnlichen Browseraufruf kein JSON mit senden kann, wird ein JSON-Syntax-Fehler ausgegeben.

Das PHP-Script beinhaltet zwei Funktionen isJSONValid() und getCode($code), um das JSON zu prüfen und einen Antwort-Header zu setzen.

Wird ausgeführt nachdem versucht wurde, das gesendete JSON in ein Objekt zu parsen, um zu prüfen welcher Fehler beim parsen des JSON auftrat.

Setzt den HTTP-Antwort-Code und den entsprechenden Header. Auf diesen Header reagiert auch FileMaker. Senden wir z.B. den Code 401, gibt FileMaker den FileMaker-Error-Code 1627 aus.

Hinweis:

FileMaker zeigt nur die Response, wenn es sich um einen erfolgreichen Quittierungcode z.B. 200, 201 handelt.

Damit immer eine Response an FileMaker zurück gegeben wird, sollte im Header immer Code 200 zurückgegeben werden.

Die Überprüfung kann man über das JSON vornehmen, in dem der Parameter code auf den Wert 200, in FileMaker geprüft wird.

 

Da das JSON über keinen POST-Parameter z.B. data = {„json“ : „wert“} gesendet wird, muss die Response über file_get_contents ermittelt werden.

Das JSON wird aus dem Request-Body in ein Objekt geparst. Anschließend wird die Funktion isJSONValid() ausgeführt, um zu überprüfen, ob das JSON der Norm entspricht.

Anschließend erfolgt die Überprüfung des Tokens. Dieser kann z.B. mittels einer Datenbank geprüft bzw. gesperrt werden. Ist der Token nicht „fm-tutorial.de“ wird der Code 401 zurückgegeben.

Nun muss die Antwort ($r), welche momentan noch ein PHP-Array ist, in ein JSON formatiert und ausgegeben werden.

Wir übergeben den Parameter „code“ in der Funktion getCode, dadurch wird der entsprechende HTTP-Status-Code und Header gesetzt.
Zusätzlich geben wir im Header an, das wir ein JSON zurückgeben – gefolgt von der Ausgabe des $r-Arrays als formatiertes (JSON_PRETTY_PRINT) JSON.

FileMaker

Damit ein JSON an unseren kleinen Webservice gesendet werden kann, benötigt man mindestens FileMaker 16.

Das JSON holen wir hier im Beispiel aus dem Feld „json“ und speichern dies in der Variablen $data.

Wir setzen den Header ( -H ), dass wir ein JSON senden.

Durch das –data Attribut übermitteln wir die Daten. Durch das vorangestellte @ weißen wir FileMaker an, den Wert für –data aus der Variabelen $data zu holen, welches unser JSON gespeichert hat.

Zusätzlich können wir noch für das Debuggen die Trace und Header setzen.

Diese cURL-Anweisung speichern wir in den FileMaker-Variablen $curl.

Danach benötigen wir noch den Scriptschritt Aus URL einfügen , um den Request abzusetzen.

Das PHP-Script und die FileMaker-Programmierung findet Ihr im Download.

Falls Ihr dieses PHP-Script auf eurem eigenen Webserver betreiben wollt, benötigt ihr PHP ab Version 5.6.

 

Download

  FM cURL JSON Webserver (212,0 KiB, 25 hits)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.