FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
1. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
www.filemaker-konferenz.com
Dr. Adam G. Augustin
FileMaker Data API mit Node.js nutzen
www.agametis.de
2. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
2
Wer bin ich?
• Selbständiger FileMaker Entwickler im Raum
München
• Beratung und Entwicklung seit über 10
Jahren
• Entwicklung von CustomApps und
Betreuung bestehender Lösungen
• FileMaker 12 bis 18 zertifiziert
• Zahlreiche Vorträge auf der FMK und dotfmp
• Mehr zu meiner Philosophie auf
www.agametis.de
3. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
3
swagger
terminal
routing
application/json
express
nodemon
vscode
header
body
response
json
parameter
package.json
npm
V8node_modules
query
axios
stateless
application layer
4. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Lasst uns das Abenteuer beginnen
• Was ist das Data API (DAPI) und wie ist es aufgebaut?
• Demo (Swagger Datei und REST Client)
• Was ist Node.js?
• Einführung und Demo
• Wie kann die Kommunikation zwischen Node.js und FMS DAPI realisiert
werden?
• Demo (Details im anschließenden Workshop)
4
5. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Was ist das Data API?
• "Das FileMaker® Data API ist ein Application Programming Interface (API), das
Webdiensten ermöglicht, auf Daten in bereitgestellten Datenbanken
zuzugreifen. Da dieses API der Representational-State-Transfer- (REST-)
Architektur entspricht, ist das FileMaker Data API ein REST API."
• "Ihr Webdienst bzw. Ihre Anwendung ruft das FileMaker Data API auf, um einen
Authentifizierungstoken für den Zugriff auf eine bereitgestellte Datenbank zu
erhalten, und verwendet dann in nachfolgenden Aufrufen diesen Token, um
Datensätze zu erstellen, zu aktualisieren und zu löschen sowie Suchabfragen
durchzuführen."
• "Das FileMaker Data API gibt Daten in JavaScript-Object-Notation- (JSON-)
Format zurück, einem Textformat, das häufig bei REST APIs verwendet wird,
da es unabhängig von bestimmten Programmiersprachenformaten ist."
5
Quelle: https://fmhelp.filemaker.com/docs/18/de/dataapi/index.html#overview
6. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Was ist das Data API?
• REST API
• Zugriff wird mit Hilfe eines Authentifizierungstoken geregelt
• Ausgabenformat der Daten ist JSON
6
7. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
FileMaker Server Data API - Einrichten
• Um es zu nutzen, muss man zunächst das "FileMaker Data API" auf dem
Server in der Admin Konsole unter "Konnektoren" aktivieren...
7
8. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
FileMaker Server Data API - Einrichten
• ... und in der FileMaker Datei das Extended Privilege Set "fmrest" für jedes
Privilege Set aktivieren, welches die Schnittstelle nutzen soll.
8
9. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
FileMaker Server Data API - Fakten
• Für jeden User in jeder Lizenzart enthalten => keine zusätzlichen Lizenzkosten
• 2 GB Datentransfer pro Monat/User => 24GB pro Jahr/User
• Nur der ausgehender Verkehr wird gezählt
• Containerinhalte werden nicht gezählt
• Unverbrauchte Datenmenge verfällt nicht monatlich
• Datenmenge verfällt erst nach einem Jahr (wird zusammen mit der Lizenz
zurückgesetzt)
• Zum Beispiel: Durchschnittsgröße der Bibel ist ca. 4,5 MB - 6 MB (ohne
Kommentare und Querverweise) => 300 bis 400 Bibeln können pro Monat über
das DAPI gelesen werden
9
10. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
FileMaker Server Data API - Fakten
• Wie lange bleibt man am Server angemeldet?
• Authentifizierungstoken ist 15 Minuten lang gültig (es zählt nur die
Inaktivität)
• Welche Daten werden bei einer Anfrage zurückgegeben?
• Lesende Zugriffe bekommen nur die Daten der Felder zurück, die sich auf
dem Layout befinden
• Wie wird ein Datensatz eindeutig identifiziert?
• Zugriffe müssen die Datensatz-ID (recordId) als Referenz verwenden
(FileMaker Funktion: Get (RecordID))
• Wie kann man die Datenintegrität sicherstellen?
• Bei schreibenden Zugriffen kann man unter Verwendung der Änderungs-
ID (modId) sicherstellen, dass ein Datensatz nur dann geändert wird, wenn
die modId's übereinstimmen. (FM Fkt: Get (RecordModificationCount))
10
11. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
FileMaker Server Data API - Funktionsumfang
• Der Funktionsumfang (Endpunkte eines REST API) wird seit FMS18 in einer
Swagger Datei beschrieben
• C:Program FilesFileMakerFileMaker ServerWeb Publishingpublishing-enginenode-
wipdapi_v1.json
11
12. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
FileMaker Server Data API - Weitere Infos
• Allgemeine DAPI Dokumentation DE/EN
• https://fmhelp.filemaker.com/docs/18/de/dataapi/index.html
• "17" oder "18"
• "de" oder "en"
• DAPI Dokumentation der Endpunkte (liegt direkt auf dem Server)
• https://<Serveradresse>/fmi/data/apidoc
• Seit FMS18: noch bessere Dokumentation der Endpunkte in der Swagger Datei
• C:Program FilesFileMakerFileMaker ServerWeb Publishingpublishing-
enginenode-wipdapi_v1.json
12
13. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Aufbau des FMS Data API
13
Demo
14. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Was ist Node.js?
• Serverseitiges Javascript
• Von der OpenJS Foundation organisiert und unter der MIT Lizenz bereitgestellt
• Entwickelt und vorgestellt in 2009 von Ryan Dahl
• Originalpräsentation: https://youtu.be/ztspvPYybIY
• Basiert auf der Javascript Engine V8 von Google
• Geschrieben in C++ mit weiteren Bibliotheken wie libuv (event loop)
• Dokumentation: https://nodejs.org/api/documentation.html
14
15. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Node.js ist groß
• Riesige Open Source Community
• Module/Pakete u.a. auf https://www.npmjs.com
• Eine ganze Industrie rund um Node.js entstanden
• Entweder werden Dienstleistungen wie z.B Hosting von Node.js Projekten
angeboten
• z.B. Heroku, AWS, Microsoft Azure
• Oder es sind Dienstleistungen, die Node.js als Basis benutzen
• z.B. Now von zeit.co, FeathersJS, Prisma für GraphQL APIs
• Oder es sind viele Frameworks für alle möglichen Anwendungszwecke
verfügbar
• z.B. UI: Angular, Ember, React, Vue, API: ExpressJS, NestJS, etc.
15
16. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Erste Schritte mit Node.js
• Installationspaket auf der Homepage: https://nodejs.org/de/
• Installation beinhaltet u.a. npm (Package Manager)
• Sehr anschauliche Node.js-Einführung "Getting Started with Node.js - Full
Tutorial" unter https://youtu.be/gG3pytAY2MY
• Das Video is zwar in Englisch, man kann aber Untertitel einblenden
16
17. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
npm
• Das Kommandozeilentool npm (ursprünglich: node package manager) ist ein
fundamentaler Bestandteil jeder Node.js Umgebung
• Gesamtes Node.js Projekt kann mit npm und der Datei package.json
organisiert werden
17
18. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
package.json
• package.json definiert und organisiert ein Node.js Projekt
• Kann mit "npm init" erzeugt werden
• Mit "npm install ‹package›" wird ein Node.js Projekt um Pakete ergänzt und in
package.json festgehalten
• Kann alle relevanten Einstellungen eines Projektes und der
Entwicklungsumgebung enthalten (für eslint, prettier, babel,...)
18
19. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Die ersten npm Befehle
• "npm init" initiiert ein Projekt und erzeug package.json
• "npm install ‹package›" installiert ein Paket und fügt es zu package.json hinzu
• "npm install" installiert alle Pakete die in package.json aufgeführt sind
• "npm install -g ‹package›" installiert ein Paket global. Damit steht es allen
Projekten zur Verfügung
• "npm update" aktualisiert alle Pakete im Projekt
• "npm uninstall ‹package›" deinstalliert ein Paket
• "npm run ‹skript›" startet ein in package.json definiertes Skript
• "npm -l" zeigt eine ausführliche Liste der Optionen
• Weitere Infos: https://docs.npmjs.com/cli-documentation/
19
20. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Erste Schritte mit Node.js
20
Demo
21. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
• Webapplikation basierend auf clientseitigem Javascript (Webapp selbst kann
z.B. mit Hilfe von Node.js entwickelt werden)
Kommunikation mit dem DAPI
21
• Vorteile:
• direkte Kommunikation mit dem DAPI
• Nachteile
• gesamte Businesslogik im Quelltext der Webapplikation
Client
Webapplikation
(z.B. Angular, React oder Vue)
FileMaker Server ≥ 17
Data API
22. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
• Skripten innerhalb eines Node.js Servers
Kommunikation mit dem DAPI
22
• Vorteile:
• Gute Grundlage zum Lernen und Verstehen der Funktionsweise
• Basis für weiterführende Projekte
• Nachteile
• keine echten Anwendungsszenarien
Node.js Server FileMaker Server ≥ 17
fms-api-client
express.js
Data API
23. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
• Webapplikation mit einem Node.js Server als Application-Layer
Kommunikation mit dem DAPI
23
• Vorteile:
• Gesamte Businesslogik auf dem Node.js Server => außerhalb der
Webapplikation
• Nachteile
• Erhöhte Komplexität durch den zusätzlichen Node.js Server
Node.js Server FileMaker Server ≥ 17
fms-api-client
express.js
Client
Data API
Webapplikation
(z.B. Angular, React oder Vue)
24. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Kommunikation mit dem DAPI
24
node.js Server FileMaker Server ≥ 17
fms-api-client
express.js
Clients
Data API
web/mobile Applikation
(z.B. Angular, React oder Vue)
node.js Server FileMaker Server ≥ 17
fms-api-client
express.js
Data API
Clients
web/mobile Applikation
(z.B. Angular, React oder Vue)
FileMaker Server ≥ 17
Data API
1
2
3
25. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Zu 1: Node.js Paket "myFMApiLibrary"
• Paket zur Kommunikation mit dem DAPI
• https://github.com/myFMbutler/myFMApiLibrary-for-JS
• Entwickelt von Lesterius
• JavaScript Paket für den direkten Einsatz im html/JS Code ohne Node.js
Server
25
26. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Zu 2: Node.js Paket "fms-api-client"
• Paket zur Kommunikation mit dem DAPI
• https://github.com/Luidog/fms-api-client
• "npm install fms-api-client"
• Entwickelt von Lui de la Parra (SeedCode)
• Deckt den gesamten Funktionsumfang des DAPI ab
• Kümmert sich selbständig um den Erhalt der Verbindung
• Enthält viele nützliche Zusatzfunktionen für Datenhandling
• Kann auch auf einem Node.js Server eingesetzt werden
26
27. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Kommunikation mit dem DAPI
27
Demo
28. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Logfiles Auswerten
28
• Logfiles herunterladen und lokal in einem Editor öffnen
29. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Logfiles Auswerten
29
• Mit dem "Event Viewer" unter Windows
30. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Logfiles Auswerten
30
• Mit der "Konsole" unter MacOS
31. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Logfiles Auswerten
31
Nö
32. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Logfiles Auswerten
32
• Node.js basierter LogViewer im Webbrowser
• Kann lokal oder auf einem Webserver eingesetzt werden
33. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
LogViewer
33
Demo
34. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
• Die Schnittstelle selbst ist ein Node.js Server basierend auf express.js
• C:Program FilesFileMakerFileMaker ServerWeb Publishingpublishing-enginenode-wip
DAPI als Node.js Projekt
34
35. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Es gibt noch mehr
35
https://link.agacloud.net/fmk2019
fmk2019-HH
Quellcode und weitere Materialien unter
und auf
https://www.github.com/agametis
36. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Fragen und Antworten
36
37. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Vielen Dank
37
Bis gleich im Workshop
38. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
FileMaker Data API mit Node.js nutzen | Dr. Adam G. Augustin
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages