FMK2019 FileMaker Anbindung an Online Systeme by Michael Heider
21 de Oct de 2019•0 recomendaciones
0 recomendaciones
Sé el primero en que te guste
ver más
•544 vistas
vistas
Total de vistas
0
En Slideshare
0
De embebidos
0
Número de embebidos
0
Descargar para leer sin conexión
Denunciar
Software
Dipl.-Ing. Michael Heider zeigt, wie FileMaker Datenbanken auf Online-Systeme mit einer REST-API zugreifen und Daten als JSON-Objekte austauschen können.
FMK2019 FileMaker Anbindung an Online Systeme by Michael Heider
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
www.filemaker-konferenz.com
Dipl.-Ing Michael Heider
FileMaker Anbindung an Online-
Systeme!
Bitte Dateien herunterladen unter:
https://www.filemaker-konferenz.com/downloads.php
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was beinhalten die Dateien?
• FM_cURL_AlleTexte.xlsx: Alle Texte, die Sie für den Workshop benötigen
(für Nutzung mit Copy & Paste).
• FMC_FileMaker_Anbindung_an_Online-Systeme.fmp12: kleine FileMaker-
Datenbank mit den benötigten Skripten.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
www.filemaker-konferenz.com
... am Beispiel des Online-Portals „Megaventory“
Dipl.-Ing Michael Heider
FileMaker Anbindung an Online-
Systeme!
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Über den Sprecher
• Freier FileMaker-Entwickler seit 1990 (FileMaker Version 2.1)
• FileMaker Neuentwicklung
• FileMaker Weiterentwicklung bestehender Datenbanken
• Consulting zu Datenbanken und Unternehmensprozessen
• Inhaber der Michael Heider GmbH (seit 2002)
• Unternehmensausrichtung „FileMakerConsulting“ in Berlin
• Mitbegründer des „FileMakerCollege“ in Berlin
• Buchautor „FileMaker Pro – Good Programming Practice“
• FileMaker Zertifizierungen Version 7 bis 16
• Zertifizierter EU-Datenschutz Spezialist
• Begeisterter Taucher und Behinderten-Tauchlehrer
6
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was machen wir?
• Ziel ist,
• zu zeigen,
• wie der Datenaustausch mit einem Webservice über eine REST-
Schnittstelle grundsätzlich aufgebaut ist, und
• welche „Anleitungen“ wir an die Hand bekommen und
• wie die Umsetzung in FileMaker implementiert ist und
• [wenn die Zeit reicht] wie wir einen Datenaustausch über eine REST-
Schnittstelle in eine FileMaker-Datenbank einbauen können.
(Achtung: Kompaktes Ziel, aber die Zeit wird dennoch knapp werden...)
• (einige) Begriffe in diesem
Zusammenhang zu klären,
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Womit greifen wir auf das Ziel zu?
• Programm Postman
• Ein eigene kleine FileMaker Datenbank mit nur zwei Tabellen
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was ist das Zielsystem?
• Megaventory: Ein Online-Service für Lagerverwaltung nebst Auftragseingang
und Fabrikationsaufträgen und vieles mehr
https://www.megaventory.com
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was machen wir?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Welche Begriffe werden in diesem
Zusammenhang genannt?
cURL JSON
REST-API
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was sind cURL, REST-API & JSON?
Grobe Abgrenzung dieser Begriffe
• cURL (Client für URL):
Programmbibliothek zur Übertragung von Dateien in Rechennetzen. Inplementiert
in vielen Betriebssystemen. Mittlerweile genutzt zur Übertragung von Daten.
Weitere Infos im Web, u.a.: https://de.wikipedia.org/wiki/CURL
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was sind cURL, REST-API & JSON?
Grobe Abgrenzung dieser Begriffe
• REST (Representational State Transfer, auch RESTful API Web services):
Ein Programmierparadigma für Webanwendungen
Weitere Infos im Web, u.a.:
• API (Application Programming Interface):
Eine Programmierschnittstelle
• REST-API:
Eine Implementierung eines Webservices, die angibt, welche Daten ausgetauscht
werden können und wie Daten mit dem Dienst ausgetauscht werden können.
https://de.wikipedia.org/wiki/Representational_State_Transfer
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was sind cURL, REST-API & JSON?
Grobe Abgrenzung dieser Begriffe
• JSON (JacaScript Object Notation):
Kompaktes Datenformat zum Austausch von Daten
- Ist für Menschen einfach lesbar
- Ist maschinenlesbar
- Hat nur sehr wenige Regeln
- Key/Value Paare
- Arrays von Values
- https://www.json.org/json-de.html
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was machen wir?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie ist der Aufbau von Anfragen?
• Vier Grund-“Bausteine“
• URL
• Die angesprochene (Web)Service-Ressource:
• Protokoll (http, https, ftp, ftps, ...) &
• Adresse des Services (WebService) &
• Ressource auf dem Server, die angesprochen werden soll
• z.B. https:/megaventory.com/api/v2017a/json/reply/SupplierClientGet
• Die URL kann auch noch Parameter enthalten
• z.B. https:/megaventory.com/api/v2017a/json/reply/
SupplierClientGet?APIKEY=1234567890&filter=client
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie ist der Aufbau von Anfragen?
• Vier Grund-“Bausteine“
• Methode
• z.B.: GET, POST, PUT, DELETE
• ... es gibt noch viele mehr
• Header
• Meta-Informationen; Maschine-zu-Maschine
• [Für den Menschen meist nicht angezeigt (z.B. im Browser)]
• Daten (optional)
• Sofern wir Daten senden wollen oder müssen
• Diese Daten werden meist als JSON-Objekte formatiert
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie ist der Aufbau von Antworten?
• Zwei Grund-“Bausteine“
• Header
• Meta-Informationen; Maschine-zu-Maschine
• [Für den Menschen meist nicht angezeigt (z.B. im Browser)]
• Body
• Daten, sofern wir Daten angefordert haben, oder
• Antwort in Form von „OK“ oder einem Fehlercode, oder
• HTML-Seite, oder
• ...
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was machen wir?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht das im
Programm Postman aus?
• Warum Postman?
• Das Programm ist gut, um die Verbindung zu einem Online-System
auszutesten!
• Was man nicht in Postman schafft, schafft man in anderen Programmen
(oder Systemen) erst recht nicht.
• Das Programm ist gut, um Prinzipien kennen zu lernen.
• Test & Prüfen & Ausprobieren! Aber Ziel ist es nicht, das Online-System mit
Postman zu bedienen.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was können wir eigentlich anfragen?
• https://api.megaventory.com/v2017a/documentation/index.html
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was können wir eigentlich anfragen?
• http://help.megaventory.com/en/articles/74873-how-do-i-get-started-with-the-api
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Was können wir eigentlich anfragen?
• https://api.megaventory.com/v2017a/documentation/index.html
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht unsere erste Anfrage aus?
• URL:
• https://api.megaventory.com/v2017a/json/reply/SupplierClientGet
• Parameter:
• Key: APIKEY
• Value: <eigener API-Schlüssel>
• Methode:
• GET
• Header:
• Key: Content-Type
• Value: application/json
• Body: <leer>
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht unsere erste Anfrage aus?
• Frage nach Authentifizierung
• Hier geht sie über den vorher mitgeteilten API-Key.
• Dieser hat IMMER Gültigkeit – solange er im User-Account beim
Dienstleister eingetragen ist.
• Es gibt andere Methoden (
• keine Authentifizierung,
• Authentifizierung mit Username & Passwort und dabei Vergabe von
Session-Cookie, die anschließend mitgesendet werden müssen,
• ...
• Wird hier nicht weiter betrachtet.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht unsere erste Anfrage aus?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht unsere zweite Anfrage aus?
• URL:
• https://api.megaventory.com/v2017a/json/reply/ProductGet
• Parameter:
• Key: APIKEY
• Value: <eigener API-Schlüssel>
• Methode:
• GET
• Header:
• Key: Content-Type
• Value: application/json
• Body: <leer>
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wieso ist das so nicht sicher?
• Problem
• Authentifizierung wird als Parameter an die URL angehängt.
• Das ist „für jeden“ lesbar.
• Lösung
• Megaventory gibt uns eigentlich vor, die POST-Methode zu nutzen und die
Authentifizierung im Body mitzusenden.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht unsere zweite Anfrage aus?
• URL:
• https://api.megaventory.com/v2017a/json/reply/ProductGet
• Parameter: <leer>
• Methode:
• POST
• Header:
• Key: Content-Type
• Value: application/json
• Body:
• {"APIKEY":"b5893a.....“}
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht unsere zweite Anfrage aus?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie schreiben wir in das System?
• URL:
• https://api.megaventory.com/v2017a/json/reply/ProductUpdate
• Parameter: <leer>
• Methode:
• POST
• Header:
• Key: Content-Type
• Value: application/json
• Body:
• ...
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie schreiben wir in das System?
• Body:
{
"APIKEY":"<eigener API-Schlüssel>“,
"mvProduct": {
"ProductType": "Buy From Supplier",
"ProductSKU": "Fischbrötchen",
"ProductDescription": "Die besten Fischbrötchen, die es in Hambug gibt“
},
"mvRecordAction": "Insert",
"mvInsertUpdateDeleteSourceApplication": "FileMaker Test-DB"
}
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht unsere zweite Anfrage aus?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht das Ganze in FileMaker aus?
• Anfragen immer über den Befehl „Aus URL einfügen[ ]“
• FileMaker-Parameter:
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht es in FileMaker aus?
• Anfragen immer über den Befehl „Aus URL einfügen[ ]“
• FileMaker-Parameter:
• „Gesamten Inhalt auswählen“: überschreibt Zielfeld
• „Ziel“: Feld oder Variable, in die der BODY der ANTWORT geschrieben wird
• „URL“: Die URL des Zielsystems
• „SSL Zertifikate verifizieren“: Sicherheitseinstellung =>
Verbindung nur herstellen, wenn Ziel über SSL-Zertifikat verifiziert ist.
• „cURL-Optionen angeben“: Die cURL-Optionen, die wir angeben
wollen oder müssen. Mehrere Optionen werden mit Leerzeichen getrennt
aneinander gehängt.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie passt das zusammen mit dem,
was wir kennen?
• Vier Grund-“Bausteine“
• URL
• => FileMaker-Parameter: „URL“
• Methode
• => FileMaker-Parameter: „cURL-Optionen angeben“
• Ausprägung „–X“
• z.B.: „-X GET“ oder „-X POST“
• Parameter
• => FileMaker-Parameter: „URL“
• Parameter werden mit „?“ an die URL angehängt und mit „&“
verknüpft, wenn es mehrere Parameter gibt.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie passt das zusammen mit dem,
was wir kennen?
• Vier Grund-“Bausteine“
• Header
• => FileMaker-Parameter: „cURL-Optionen“
• Ausprägung „-H
• z.B.: „-H "Content-Type:application/json"“
• Der Inhalt MUSS in Anführungszeichen geschrieben werden =>
FileMaker-Maskierung mit "
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie passt das zusammen mit dem,
was wir kennen?
• Vier Grund-“Bausteine“
• Daten
• => FileMaker-Parameter: „cURL-Optionen“
• Ausprägung „–-data“ (oder „-D“)
• z.B.: „--data APIKEY=abcd
• Für ein JSON-Objekt: "--data @$json”
• Das JSON-Objekt wird zuvor in die Variable „$json“
geschrieben (FileMaker-Befehl „Variable setzen [ ]“) und dann
übergeben mit der cURL-Option „--data @$json“
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht die Anfrage nach der
Produktliste in FileMaker aus?
• Anfrage über den Befehl „Aus URL einfügen[ ]“
• „Gesamten Inhalt auswählen“:
• <nach eigenem Ermessen>
• „Ziel“:
• $$result
• „URL“:
• https://api.megaventory.com/v2017a/json/reply/ProductGet
• „SSL Zertifikate verifizieren“:
• aus
• „cURL-Optionen angeben“:
• "-X POST " & "-H "Content-Type:application/json" " & "--data @$json
" & "--show-error --dump-header $$dump"
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht die Anfrage nach der
Produktliste in FileMaker aus?
• „cURL-Optionen“ im Detail
• "-X POST": Methode POST
• "-H "Content-Type:application/json"": Unser Header
• "--data @$json": Unsere Daten in der Variablen $json
• "--show-error": Anforderung: „Weise Fehler aus!“
• "--dump-header $$dump“: Anforderung: „Schreibe den Header in die
Variable $$dump“ (Anderenfalls würden wir den Header nicht bekommen!)
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie läßt sich das umsetzen?
• Es läßt sich ein universelles Script schreiben, das sich für (fast) alle Anfragen an
(fast) alle WebServices nutzen läßt.
• Das Script erwartet einen Script-Parameter in Form eines JSON-Objekts mit
folgemdem Inhalt:
• URL
ist Text
• Parameter
ist JSON-Objekt
• Methode
ist Text
• Header
ist JSON-Objekt
• Daten
ist Text
• JSON-Daten-Objekt
ist JSON-Objekt
• Das Script berechnet daraus die FileMaker-Parameter „url“& „cURL-Optionen“
und führt die Anfrage aus.
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie läßt sich das umsetzen?
• Es läßt sich ein universelles Script schreiben, das sich für (fast) alle Anfragen an
(fast) alle WebServices nutzen läßt.
• Als Ergebnisse erhalten wir:
• Ein Script-Ergbnis in Form eines JSON-Elements mit folgenden Inhalt:
• error
FileMaker Fehlercode
• errorextern
Fehler-Antwort des Services
• time
benötigte Zeit der Anfrage in Millisekunden
• Eine globale Variable $$result mit dem Body der Antwort
• Eine globale Variable $$dump mit dem Header der Anfrage
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie sieht dieses Script aus?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie wird das Script genutzt?
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Welche cURL-Optionen gibt es?
• cURL-Optionen von FileMaker sind nachzulesen in FileMaker-Hilfe.
• In den Unterlagen auch als „Supported cURL options.pdf“
• Tutorial von Russel Watson in der FileMaker Community
• https://community.filemaker.com/en/s/article/new-curl-options-in-insert-
from-url
• cURL-Optionen allgemein sind nachzulesen:
• Internet
• Fachbücher
• In den Unterlagen als „Everything-cURL.pdf“
• https://bookcurl.haxx.se
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Daten abrufen können wir nun, aber wie
bereiten wir diese auf für die Tabellen?
• Daten erhalten wir als JSON-Objekte.
• Diese müssen wir „parsen“, um die einzelnen
Informationen zu erhalten und in Datensätze und
Felder einzutragen.
• Hierzu stellt uns FileMaker drei Befehle zur
Verfügung:
• JSONGetElement
• JSONListKeys
• JSONListValues
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie können wir JSON-Objekte in
FileMaker bearbeiten?
• Wir erhalten in Filemaker sechs Funktionen zum Arbeiten mit JSON-Objekten:
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Wie geht es weiter?
• Bibliothek von kostenfreien REST-APIs zum Ausprobieren und Üben
https://github.com/public-apis/public-apis
10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
Dipl.-Ing. Michael Heider
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages