Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
02.07.2019 09:44:04© M. Leischner Internetkommunikation Folie 1
Modul 10:
Web APIs (REST, XHR,
SSE, WebSockets)
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
(Web Real-Time
Communications)
Browser Networking APIs, Protocols, and Services - Einordnung
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 2
compare https://hpbn.co/primer-on-browser-networking/ (Primer on Browser Networking)
TCP, TLS, UDP, DNS
Socket management and optimization
Same origin policy and security sandboxing
Caching, cookie management, proxy logic
HTTP 1.1/2.0
Rest(Representational
State Transfer)
XHR(XMLHttpRequest)
EventSource WebsocketRTCPeer
ConnectionDataChannel
Anw
endungsnähe
statisch dynamisch real-time
Ajax(Asynchronous
JavaScript and XML)
Request
Information
„bidirectional
connection“
„automatic
updates from
server“
Soap(Simple Object
Access Protocol)
Web
Services
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Verbindungsmanagement und Optimierung
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 3
Copyright © 2013 Ilya Grigorik. Published by O'Reilly Media, Inc. Licensed under CC BY-NC-ND 4.0
⚫ Socket-Management
in Pools
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Verbindungsmanagement und Optimierung
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 4
⚫ Netzsicherheit + Sandboxing
TLS-Aushandlung
Same-Origin Policy
Resource-Management
⚫ Verbindungsstatus (Authentifizierung, Cookies) über mehrere Tabs managen.Beispiel: Ausloggen auf einem Tab bewirkt ausloggen auf allen anderen offenen Tabs
⚫ Client-State-Caching
Automatisches Cachen von Resourcen.
Automatisches Auffrischung abgelaufener Resourcen.
Größe des Caches automatisch managen.
Copyright © 2013 Ilya Grigorik. Published by O'Reilly Media, Inc. Licensed under CC BY-NC-ND 4.0
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Web APIs
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 5
⚫ Ziel der Web-API: Bereitstellen von Funktionalität.
⚫ Web-API wird von einem Programm genutzt. Daher muss die Logik
der API vorher genau definiert sein.
⚫ Informationen über eine Web-API:
Funktionalität
Aufrufstelle
Input/Output-Parameter
SLAs
Technische, kaufmännische, rechtliche Anforderungen
Dokumentation
⚫ Typen von APIs:
private API
Öffentliche API (z.B. Google APIs)
AssetApp API
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
REST
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 6
⚫ Ausgangspunkt:
Roy Thomas Fielding: Architectural Styles and the Design of
Network-based Software Architectures, dissertation, University of
California, Irvine, 2000.
https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_disserta
tion.pdf
⚫ Grundidee: Architekturmodell für globales Informationssystem
basierend auf Protokoll HTTP und auf Ressourcenidentifikation über
URI.
⚫ Im Gegensatz hierzu stellt
(Simple Object Access Protocol (SOAP) und
Web Services Description Language (WSDL)
ein transportunabhängiges Servicemodell dar.
vergleiche: Stefan Tilkov; Martin Eigenbrodt; Silvia Schreier; Oliver Wolff: REST und HTTP, 3rd Edition, dpunkt, 2015
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Grundprinzipien von REST
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 7
⚫ Schwerpunkt von REST liegt auf der Konzeptbildung.
⚫ Ergebnis ist ein Architekturstil REST, der beschreibt, wie man HTTP
+ URI für die Realisierung von Web_APIs einsetzt.
⚫ Ergebnis ist eine REST-konformen Implementierung einer HTTP-API.
→ RESTful HTTP.
⚫ REST Grundprinzipien:
Ressourcen mit eindeutiger Identifikation
Verknüpfungen/Hypermedia
Standardmethoden für den Zugriff
Unterschiedliche Repräsentationen der Ressourcen
Statuslose Kommunikation
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Grundprinzipien von REST
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 8
⚫ Eindeutige Identifikation
Jede Ressource wird durch eine URI identifiziert.
Es stellt sich die Frage, für welche Objekte eine URI konstruiert wird.
(Etwa für jeden DB-Eintrag?)
Beisdpiel: Karnevalservice des Netzlabors
vergleiche: Stefan Tilkov; Martin Eigenbrodt; Silvia Schreier; Oliver Wolff: REST und HTTP, 3rd Edition, dpunkt, 2015
http://dh.docklab.de:11111/api/karneval?jahr=2020&tag=W
ParameterRouting zum
Service
scheme
protocolportFully Qualified
Domain Name
(FQDN)
URL (Universal Resource Locator)
194.95.66.107
DNS
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Optionsdreieck – Operationen, Datentypen, Objekte
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 9
Operationen/
Methoden
Instanzen/
Objekte
Datentypen
Operationen/
MethodenInstanzen/
Objekte
Datentypen
klassische
API
RESTful
API
vergleiche: Stefan Tilkov; Martin Eigenbrodt; Silvia Schreier; Oliver Wolff: REST und HTTP, 3rd Edition, dpunkt, 2015
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Grundprinzipien von REST
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 10
⚫ Hypermedia: Steuerung der App durch Hypermedia-Elemente
Zustandsübergänge der App können durch Links gesteuert.
Zustandsübergänge der App können durch html-Forms (Input-Elemente)
gesteuert werden.
⚫ Standardelemente:
Konsequente Nutzung der HTTP-Standardmethoden:
GET: Ressource vom Server anfordern,
HEAD: Header (ohne Daten) vom Server anfordern,
POST: Daten (z.B. Formulardaten) zum Server senden,
PUT: Daten unter Angabe einer URI hochladen,
DELETE: Löschen einer Ressource auf dem Server,
OPTIONS: Liefert Liste der vom Server unterstützten
Kommunikationsoptionen und Merkmale.
Wichtig: Alle Standardmethoden müssen korrekt implementiert sein
vergleiche: Stefan Tilkov; Martin Eigenbrodt; Silvia Schreier; Oliver Wolff: REST und HTTP, 3rd Edition, dpunkt, 2015
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Grundprinzipien von REST
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 11
⚫ Ressourcen und Repräsentationen
Damit Client und Server sich verstehen, müssen sie sich auf
Präsentationen der Ressourcen verständigen.
Hierzu kann HTTP content negotiation verwendet werden.
Client im Header: Accept: text/html, application/xml, application/json
Server im Header:Content-Type: text/html; charset=utf-8
Content-Type: application/json; charset=utf-8
Mehr als eine Repräsentation einer Ressource sind möglich und
sinnvoll.
vergleiche: Stefan Tilkov; Martin Eigenbrodt; Silvia Schreier; Oliver Wolff: REST und HTTP, 3rd Edition, dpunkt, 2015
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Grundprinzipien von REST
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 12
⚫ Statuslose Kommunikation
Zustand wird entweder vom Client gehalten oder vom Server in einen
Ressourcenstatus umgewandelt.
Fall 1: Zustand vollständig auf dem Client.
⚫ Kann z.B. über Cookie realisiert werden. Cookie repräsentiert den
gesamten Sitzungszustand.
Fall 2: Zustand vollständig auf dem Server.
⚫ Ressourcenstatus auf dem Server repräsentiert den
Sitzungszustand.
Insgesamt lockerere Kopplung zwischen Client und Server.
vergleiche: Stefan Tilkov; Martin Eigenbrodt; Silvia Schreier; Oliver Wolff: REST und HTTP, 3rd Edition, dpunkt, 2015
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Beispiel einer REST-API: Karnevalservice
Der Karneval Service liefert für ein gegebenes Jahr das Datum der Karnevalsfesttage:
⚫ Weiberfastnacht, Rosenmontag, Aschermittwoch sowie das Datum von Ostersonntag.
Die Aufrufparameter sind jahr und tag. Der Parameter jahr ist eine natürliche Zahl zwischen 1900 und 2100. Mit dem Parameter tag wird der gewünschte Karnevalsfesttag gesteuert. Es gilt:
⚫ W = Weiberfastnacht,
⚫ R = Rosenmontag,
⚫ A = Aschermittwoch sowie
⚫ O = Ostern.
Der Rückgabewert ist ein JSON String, der die Bezeichnung des Karnevalsfesttags sowie das zugehörige Datum enthält.
REST-Prinzip: Funktionsaufruf und alle Parameter werden für ein GET in die URL kodiert. Ergebnis wird im JSON-Format geliefert.
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 13
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Beispiel einer REST-API: Karnevalservice
Das Eingabeformat wird sofort aus nachfolgendem Beispiel klar.
Gesucht ist Weiberfastnacht im Jahr 2020. Eingabe-URL:
https://rest.docklab.de/api/karneval?jahr=2020&tag=W
Ausgabe:
⚫ Chrome: ["Weiberfastnacht",[20,2,2020]]
⚫ Firefox:
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 14
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
XMLHttpRequest (XHR)
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 15
⚫ Programmierschnittstelle für JavaScript.
⚫ Setzt auf HTTP und XML (und auch anderen Formaten) auf.
⚫ Grundbaustein der Ajax-Technologie, um interaktive Webseiten zu
programmieren.
(Ajax = Asynchronous JavaScript and XML)
⚫ Asynchrone Hintergrund-Kommunikation mit dem Server unter
voller Kontrolle von JavaScript.
Ziel: Transaktionen im Hintergrund.
⚫ Die Hauptarbeit bei XHR – i.e. die Einbettung in JavaScript - macht
der Browser.
⚫ Mit XHR ist es möglich, einen Request an den Server zu schicken,
ohne die Seite komplett neu laden zu müssen.
Hierdurch können neue Infos vom Server abgerufen und in die
vorhandene Seite eingebaut werden.
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Server-Sent Events (SSE)
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 16
⚫ Teil von HTML5
⚫ Protokoll, um Textdaten (Events) über HTTP in Realtime an den
Client zu streamen.
⚫ Der Server pushed Daten asynchron an den Client, ohne vorher vom
client angepolled werden zu müssen.
⚫ Mögliche Anwendungen:
Monitor für laufende Statistikdaten, z.B. Herzschlag+Blutdruck bei
Patienten-Monitoring im Krankenhaus.
Anwendung für Meßdatenüberwachung
Chatanwendung
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
WebSocket
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 17
⚫ Bidirektionales Streaming von Text und binären Daten zwischen
Client und Server.
⚫ Hierzu bauen WebSockets eine persistente TCP-Verbindung
zwischen Client und Server auf.
⚫ Durch WebSockets wird ein leistungsfähiger Rückkanal von Server
zu Client auf einfache Weise möglich.
⚫ Durch WebSockets wird kein Anwendungsprotokoll vorgegeben.
Dieses muss zwischen den Anwendungen vordefiniert sein bzw.
bidirektional ausgehandelt werden.
⚫ Gute geeignet für:
Implementierung von Spielen,
kundenspezifische Applikationen.
⚫ Spezifiziert in RFC6455, The WebSocket Protocol, 12/2011
HochschuleBonn-Rhein-Sieg
Prof. Dr. Martin LeischnerNetzwerksysteme und TK
Kommunikationsfluss von XHR, SSE und WebSocket
02.07.2019 09:44:05© M. Leischner Internetkommunikation Folie 18
Copyright © 2013 Ilya Grigorik. Published by O'Reilly Media, Inc. Licensed under CC BY-NC-ND 4.0