18
Hochschule Bonn-Rhein-Sieg Prof. Dr. Martin Leischner Netzwerksysteme und TK 02.07.2019 09:44:04 © M. Leischner Internetkommunikation Folie 1 Modul 10: Web APIs (REST, XHR, SSE, WebSockets)

Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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)

Page 2: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 3: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 4: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 5: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 6: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 7: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 8: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 9: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 10: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 11: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 12: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 13: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 14: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 15: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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.

Page 16: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 17: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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

Page 18: Modul 10: Web APIs (REST, XHR, SSE, WebSockets) · Web Services Description Language (WSDL) ein transportunabhängiges Servicemodell dar. vergleiche: Stefan Tilkov; Martin Eigenbrodt;

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