Backend. Hochschule Darmstadt, Fachbereich Informatik, Wintersemester 2016/2017. Christopher Dörge, Thomas Sauer, David Müller

Ähnliche Dokumente
Architektur von REST basierten Webservices

RESTful API Grundlagen mit PHP und Payrexx

2. WWW-Protokolle und -Formate

Hypertext Transfer Protocol

Web-Konzepte für das Internet der Dinge Ein Überblick

Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services?

ODS 6.0 Schnittstelle

REST-API mit Node, Express und MongoDB

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin

Perl-Praxis. CGI-Skripte. Madis Rumming, Jan Krüger.

Schnittstellenbeschreibung

REST Services To-Go Einfacher Einstieg in die REST Programmierung

Entwicklung einer REST-API zur Erstellung und Konfiguration von Microsoft Teams. Jan Kruse, utilitas GmbH

Modul 9: Web APIs (REST, XHR, SSE, WebSockets)

REST Services in APEX Anwendungen nutzen

Node.js Einführung Manuel Hart

Automatisierung und Integration von Request Tracker Systemen mittels REST-Schnittstelle. Stefan Hornburg. Perlworkshop 2008

Schnittstellenarchitektur in Zeiten sich wandelnder Frontend-Technologien

Web Services Integration heterogener Systemlandschaften. Prof. Dr. Gregor Engels Fabian Christ 08. Juni 2010

RESTful Web. Representational State Transfer

RESTful API design. Warum REST mehr als HTTP mit XML ist. Dr. Stefan Schlott BeOne Stuttgart GmbH

Stefan Tilkov. REST und HTTP. Einsatz der Architektur des Web für Integrationsszenarien. dpunkt.verlag

Webtechnologien. Stunde 6 ( ) - HTTP - HTML - Servlets - AJAX. Verschoben haben wir - JSP (Java Server Pages) - JSF (Java Server Faces)

Verteilte Anwendungen Teil 9: Representational State Transfer (REST) Teil 1

GraphQL, das bessere REST?

Echtzeitvisualisierung mit Twitter und Co. Autoren: Kai Donato & Oliver Lemm

VAADIN, SPRING BOOT & REST

Wenn. Schnittstellen. alt werden... Claus Straube IT Architekt

HTTP. Arthur Zaczek. Aug 2015

Mobilkommunikation. REST-basierte Dienste für verteilte, mobile Anwendungen. A. Gillert, A. Grebe, M. Hüffmeyer, C. Vogt

Forms auf Tablets. Vision oder Realität?

Wolkig bis heiter. Andreas Wismann WHEN OTHERS. APEX als Drehkreuz für Web Service-Anwendungen

Anwendungsprotokolle: HTTP, POP, SMTP

APIC-EM Software Engineering Insight

ASP.NET Web-API - Grundlagen

Software Engineering I (IB) Node.js. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

BIW Wahlpflichtmodul. Einführung in Solr, Pipeline und REST. Philipp Schaer, TH Köln (University of Applied Sciences), Cologne, Germany

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

Entwicklung einer Webapplikation zur Vereinfachung der Umsetzung webbasierter Anwendungen

REST IN PEACE MIT ORACLE

Integration von UIS-Webdiensten

Delphi MVC Framework. Mathias Pannier

!"# $ % Internet Protokolle: HTTP 1/38

MULTIPLEXING UND SERVER PUSH

Das Hypertext Transfer Protokoll HTTP/1.1

Web Grundlagen zum Spidering

DIAMETER Base Protocol (RFC3588)

IT im Wandel. Der richtige Weg zu modernen Apps und in die Oracle Cloud

15. Das Hypertext Transfer Protokoll HTTP - Überblick. 1. Requests und Responses. 2. Content Negotiation. 3. State Management (Cookies)

Aktuelle Technologien zur Entwicklung verteilter Anwendungen RESTful Web Services mit JAX-RS

WebApp mit Node und Express

Implementierung von Web Services: Teil I: Einleitung / SOAP

Mobile in Minuten? Forms-Anwendungen auf mobilen Endgeräten

Neue Welten: Externe Daten mit APEX nutzen

SIP: Session Initiation Protocol (Signalisierungsprotokoll für Sessions) Request. Response

M2M-Serviceplattformen für das Internet der Dinge

Simple serial time and HTTP client API Version 00.75

2.1 Eine kurze Geschichte von REST Grundprinzipien Zusammenfassung... 19

Protokolle. Konrad Rosenbaum, 2006/7 protected under the GNU GPL & FDL

X12L 21. Oktober a) HTML - ein Dateiformat, welches maschinenlesbare Verweise (links) enthält,

Der Oracle Mobile Cloud Service

Dirk von der Weiden, Olaf Meyer C1 SetCon. REST in the Enterprise

Electron - WebDeskApps

Anleitung REST API Schneelast-Messsystem SMS

Erstellen von Web-Seiten HTML und mehr...

Inhaltsverzeichnis. 2.1 Eine kurze Geschichte von REST Grundprinzipien Zusammenfassung... 17

Apache HTTP Server Administration

WEBPROGRAMMIERUNG DATEN AUS DEM WEB AUTOMATISIERT VERARBEITEN

y Hypertext braucht Ressourcen-Identifikation y Unterschied zwischen Link und Identifier

Themen. Anwendungsschicht DNS HTTP. Stefan Szalowski Rechnernetze Anwendungsschicht

Internet Protokolle für Multimedia - Anwendungen

Leichtgewichtige Web 2.0-Architektur für komplexe Business-Anwendungen Nicolas Moser PRODYNA AG

Perl-Praxis. CGI-Skripte. Jörn Clausen Jens Reeder, Jan Krüger

HTTP Hypertext Transfer Protocol

Seminararbeit. Konzept einer Schnittstelle zur Benutzerverwaltung in RiskShield-Server. Christoph Laufs INFORM GmbH INFORM GmbH 1

Nerdball Ein automatischer IRC Image Collector

Perl-Praxis. CGI-Skripte. Jörn Clausen

Dies ist der zweite Artikel einer Serie über Electron.

Netzwerke Teil 12: Hypertext Transfer Protokoll

!"#$"%&'()*$+()',!-+.'/',

Die Krux mit dem Browser Probleme bei der Realisierung web-basierter Geschäftsanwendungen

BUSINESSMAIL X.400 WEB SERVICE API MAILBOX STATUS V1.0

SAP NetWeaver Gateway. 2013

Anleitung REST API Schneelast-Messsystem SMS

Grundlagen der Rechnernetze. Applikationsschicht

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

APEX DESKTOP APPS. Interaktion mit dem Client System

Webservices. Entwicklercamp Denny Sternberg

LT 56 - NODE.JS ES GIBT AUCH SCHÖNE MOMENTE. Ralf Enderle

REST: Eine leichtgewichtige und einfachere Alternative zu Web Services. W3L AG

Microsoft.NET XML-Webdienste Schritt für Schritt

SOAP und REST Ein Vergleich von service- und ressourcenorientierten Architekturen und deren Einsatz im VMA-Projekt

Webtechnologien Teil 2: Hypertext Transfer Protokoll (Wiederholung aus Rechnernetze)

SOA mit.net: Vom Geschäftsprozess zur Lösung

Transkript:

Backend Hochschule Darmstadt, Fachbereich Informatik, Wintersemester 2016/2017 Christopher Dörge, Thomas Sauer, David Müller

Aufbau einer RESTful API mit... Ziel node.js, express und MongoDB Symfony und MySQL

Agenda API-driven development? Welche Eigenschaften von HTTP werden verwendet? Was ist REST? Wie baut man eine Schnittstelle auf? Wie testet man eine Schnittstelle?

Push Server verteilen Daten an ihre Clients Broadcast Systeme Pull Clients fragen beim Server nach Daten Klassische Kommunikation im Web Push & Pull

Request Client Server Response Pull

API-driven Development

https://www.getpostman.com/

HTTP Hyper Text Transfer Protocol

Request Client Server Response HTTP HTTP

Zustandslos Medienunabhängig Verbindungslos Eigenschaften von HTTP

port query http://www.domain.com:1234/path/to/resource?a=b&x=y protocol host resource path HTTP - Request Client Request Response Server

GET POST PUT DELETE Request HTTP - Verben Client Response Server

GET POST PUT DELETE PATCH Request HTTP - Verben Client Response Server

GET POST PUT DELETE PATCH HEAD OPTIONS TRACE CONNECT Request HTTP - Verben Client Response Server

http://localhost:80/path/to/resource?hello=world GET /path/to/resource?hello=world HTTP/1.1 Host: localhost:80 Cache-Control: no-cache Request Client Server HTTP - Request Response

http://localhost:80/path/to/resource?hello=world GET /path/to/resource?hello=world HTTP/1.1 Host: localhost:80 Cache-Control: no-cache Request Client Server HTTP - Request Response

http://localhost:80/path/to/resource?hello=world GET /path/to/resource?hello=world HTTP/1.1 Host: localhost:80 Cache-Control: no-cache Request Client Server HTTP - Request Response

POST /path/to/resource HTTP/1.1 Host: localhost:80 Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache hello=world Request Client Server HTTP - Request Response

POST /path/to/resource HTTP/1.1 Host: localhost:80 Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache hello=world Request Client Server HTTP - Request Response

HTTP/1.1 200 OK Content-Length: 1167 Content-Type: text/html; charset=utf-8 Date: Thu, 06 Oct 2016 16:15:00 GMT Last-Modified: Mon, 03 Oct 2016 15:30:00 GMT <!DOCTYPE html>... Request Client Server HTTP - Response Response

Request line Status line POST /path/to/resource HTTP/1.1 Host: localhost:80 Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache hello=world HTTP/1.1 200 OK Content-Length: 1167 Content-Type: text/html; charset=utf-8 Date: Thu, 06 Oct 2016 16:15:00 GMT Last-Modified: Mon, 03 Oct 2016 15:30:00 GMT <!DOCTYPE html>... Request Client Server HTTP - Vergleich Request / Response Response

http://todomvc.com/

REST

Ursprünglich aus einer Dissertation von Roy Fielding (2000) Representational State Transfer Bestimmt eine Reihe von 4 Constraints, die bei einer Client-Server Kommunikation immer gelten sollten (Regeln für den Server) REST

Client Server Constraint Request Client Server Response

Stateless Server Constraint Server Request Client Server Response Server

Caching Constraint Request Client Server Response

Uniform Interface Constraint Jedes Interface der API funktioniert auf die gleiche Art und Weise Vier Regeln, die den Aufbau einer RESTful API bestimmen

Uniform Interface Constraint - Resources Resources sind die Entitäten der Schnittstelle Uniform Interfaces sind für Dinge (Resourcen) gebaut, nicht für Aktionen (authorize) http://.../tasks/

Uniform Interface Constraint - Verbs GET POST DELETE PUT PATCH

Uniform Interface Constraint - Self-descriptive messages Jede Nachricht eines Servers an den Client enthält alle Informationen, die zur Darstellung der Nachricht notwendig sind. Dies inkludiert unter Anderem den notwendigen Parser für den MIME-Type (image/png, application/json, )

Uniform Interface Constraint - HATEOAS Hypermedia as the Engine of Application State Actions, die der Client ausüben kann, werden ihm vom Server vorgegeben Bsp: Hyperlinks in Hypertext Der Client sollte über diese Form beim Navigieren durch das System auf alle Ressourcen Zugriff erhalten und nicht raten müssen Dies gilt jedoch nicht für die Einstiegspunkte des Systems

Aufbau eines Webservice mit node.js

https://nodejs.org/

JavaScript im Backend?

Popularität (Jeder kennt ein wenig JavaScript) Schnelligkeit (V8 von Google) Event Loop (alle I/O operations werden asynchron im Single Thread ausgeführt) Auch deine DB könnte JavaScript verwenden (MongoDB, RethinkDB) JSON als universelles Datenformat über alle Instanzen Tooling Eine riesige Community JavaScript im Backend?

Node Package Manager (npm) https://www.npmjs.com/

Node Package Manager (npm) npm publish reusable-code

Node Package Manager (npm) npm install reusable-code

Node Package Manager (npm) npm init reusable-code.js package.json { "name" : "reusable-code", "version": "10.3.1", "description": "An example module to illustrate the usage of a package.json", "author": "Your Name <you.name@example.org>", "contributors": [{ "name": "John Doe", "email": "john.doe@example.com" }], "main": "reusable-code.js", "dependencies" : { "foo" : "1.0.0", "bar" : ">=1.0.2 <2.1.2", }, "license": "MIT" }

Node Package Manager (npm)

express Web Framework für node.js

Zusatz

WHAT API - Kommunikation von einem gegebenen System mit einem Fremdsystem WHY Modularität, Aufteilen von Verantwortlichkeiten, Verstecken interner Komplexitäten HOW Davon handelt dieser Foliensatz API-driven Development

Zustandslosigkeit Anfragen bilden eine unabängige Transaktion Anfragen werden ohne Bezug auf frühere Anfragen behandelt Medienunabhängig Jede Art Daten kann per HTTP übertragen werden Sowohl Client als auch Server müssen mit Inhalt umgehen können (MIME-Type) Verbindungslosigkeit Client erzeugt HTTP-Request, versendet diesen und bricht Verbindung zum Server ab Server verarbeitet den Request, erzeugt einen Response und verschickt diesen, indem er die Verbindung erneut aufbaut Eigenschaften von HTTP

Verbindungslos, aber... Anfragen und Antworten werden per TCP/IP verschickt Verbindungen werden abgebrochen, um Server nicht zu blockieren Nach jedem Verbindungsaufbau wird direkt abgebrochen erzwungene Verbindungslosigkeit Application-Layer Protocol Wird auf Applikationsebene benutzt (Browser/Webserver) Nutzt die Transport-Ebene (Transport Layer) Eigenschaften von HTTP

GET - Anfrage einer Ressource (Parameter über Query der URL) POST - Erzeugen einer Ressource (Parameter per HTTP-Body (Payload)) PUT - Erneuern einer Ressource (HTTP-Body enthält Update-Parameter) PATCH - Ändert eine Ressource ohne diese (wie bei PUT) zu ersetzen DELETE - Löschen einer Ressource HEAD - Server sendet Response wie bei GET, nur ohne Content TRACE - Liefert die Anfrage, wie sie vom Server empfangen wurde (wichtig für Debugging) OPTIONS - Liefert Serverfähigkeiten CONNECT - Aufbau eines SSL-Tunnels (nur SSL) HTTP - Verben Client Request Response Server

Aufbau nach HTTP-Spezifikation: https://cdn.tutsplus.com/net/authors/jeremymcpeak/http1-req-res-details.png Request-Line (Client) GET /path/to/resource HTTP/1.1 Status-Line (Server) HTTP/1.1 200 OK HTTP - Request / Response

Existenz eines Clients und eines Servers Client sendet Anfragen (Request) an den Server Server sendet dem Client eine Antwort (Response) REST - Client Server Constraint

Server sind zu jeder Zeit austauschbar Somit dürfen keine Clientinformationen auf dem Server gespeichert werden Das Constraint besagt, dass alle relevanten Informationen über den Zustand bei der Kommunikation übertragen werden Alle Informationen für den Server sind im Request Alle Informationen für den Client sind in der Response REST - Stateless Server Constraint

Daten, die sich nicht häufig ändern, sollen auch nicht ständig abgefragt werden Deswegen soll der Server dem Client mitteilen, wie lange die Daten noch Gültigkeit besitzen REST - Caching Constraint

Die bei der Ausführung der Aktivität eingesetzten HTTP-Verbs diktieren die auszuführende Aktion GET - Daten erhalten POST - Daten hinzufügen DELETE - Datensatz löschen PUT - Datensatz verändern oder ersetzen PATCH - Datensatz partiell verändern REST - Uniform Interface Constraint Verbs