Search Header Logo
Tutorium 11

Tutorium 11

Assessment

Presentation

Computers

University

Hard

Created by

Nastassia Lukyanovich

Used 15+ times

FREE Resource

16 Slides • 8 Questions

1

Tutorium 11

2

REST

Was ist REST?

3

REST

REST: Paradigma für die Gestaltung von Web-basierten Programmierschnittstellen (Application Programming Interfaces, APIs), vornehmlich für die Maschine-zu-Maschine-Kommunikation

RESTful: Webdienste, die dem REST-Paradigma folgen

Ressource: jede Art von kohärenter und sinnvoller Information (z.B. eine Liste oder Elemente einer Liste), die über eine Adresse (URI) zur Verfügung gestellt werden kann.
Repräsentation: Darstellungsform einer Ressource (z.B. HTML, XML oder JSON)
Verben: RESTful Services definieren keine eigenen Methoden und Operationen in ihrer API, sondern verwenden die Methoden von HTTP

URI (Uniform Resource Identifier): Jede Ressource verfügt über eine eigene, dedizierte Adresse in Form eines Uniform Resource Identifiers (URI).

URI hat 2 Unterkategorien:
1. URN: Codiert den Namen einer Ressource, bsp: tel:+1-816-555-1212
2. URL: Codiert den Ort einer Ressource, bsp:
http://www.tu-berlin.de/

media
media

4

Multiple Choice

HTTP steht für Hypertext Transport Protocol und wurde in den 90er- Jahren in Europa entwickelt.

1

Wahr

2

Falsch

5

Multiple Choice

TCP ist ein zustandsloses Protokoll, das vor allem auf Grund seiner Verlässlichkeit für die Übermittlung von Hypertexten gut geeignet ist.

1

Wahr

2

Falsch

6

Multiple Choice

Laut HTTP Spezifikation wird eine HTTP-Anfrage immer durch einen Client und eine HTTP-Antwort durch einen Server gesendet.

1

Wahr

2

Falsch

7

Multiple Choice

Ein Single-Thread-Server arbeitet ausschließlich synchron: Er nimmt HTTP-Anfragen entgegen, bearbeitet diese und versendet Antworten.

1

Wahr

2

Falsch

8

Multiple Choice

Die Antwort auf eine HTTP-OPTIONS Anfrage enthält das Header-Feld ‚Methods‘, in dem die vom Server unterstützten HTTP-Methoden aufgelistet werden.

1

Wahr

2

Falsch

9

11.1 Node.js: Grundlagen

Node module:

​Modul

​Beschreibung

​http

http module includes classes, methods and events to create Node.js http server.

​url

url module includes methods for URL resolution and parsing.

​querystring

includes methods to deal with querystring.​

media
media

Callback-Funktion Parameter:

1) req: empfangener http-request

2) res: zugehöriger response

Request. Events:

data: ausgelöst, sobald neue Daten geliefert werden

end: ausgelöst, sobald die Übermittlung sämtlicher Teile einer Anfrage abgeschlossen ist.

close: signalisiert, dass die TCP-Verbindung beendet wurde.

Response. Methods:

writeHead(): Header-Parameter, z.b. Statuscode.

write(): Daten in den Response-body schreiben.

end(): http-response abschließen und verschicken. Daten in den Response-body schreiben (write ist dann nicht nötig)

Node modul importieren:

Server erstellen mithilfe http-objekts:

10

11.1 Node.js: Grundlagen

Request. Events:

data: ausgelöst, sobald neue Daten geliefert werden

end: ausgelöst, sobald die Übermittlung sämtlicher Teile einer Anfrage abgeschlossen ist.

close: signalisiert, dass die TCP-Verbindung beendet wurde. !Beachte!

end und close können nur ein mal pro anfrage ausgelöst werden. Tritt close vor end auf, ist die Übertragung unvollständig.

Response. Methods:

writeHead(): Header-Parameter, z.b. Statuscode.

write(): Daten in den Response-body schreiben.

end(): http-response abschließen und verschicken. Daten in den Response-body schreiben (write ist dann nicht nötig)

media
media

11

Fill in the Blank

Welches Modul soll man importieren, um Node.js http-Server erstellen zu können?

12

Open Ended

Wie importiert man ein Modul?

13

Fill in the Blank

Welches Event wird ausgelöst, sobald neue Daten geliefert werden?

14

11.1 Node.js: Einführung

Letzte Woche haben wir besprochen, wie man mittels HTTP mit einem lokal laufenden Webserver kommunizieren kann. Nun wollen wir diesen Ansatz erweitern, indem wir unseren eigenen Server mit Node.js implementieren.

In der Vorgabe finden Sie in der Datei server.js einen teilweise implementieren Node.js Server. Machen Sie sich mit seiner Funktion vertraut und ergänzen Sie ihn anschließend um folgende Funktionalitäten:

1) GET

2) POST

3) PUT

4) DELETE

5) default

15

11.1 Node.js: Einführung

GET:

Mittels der GET-Methode können Eintrage ausgelesen werden.

1) Wird eine konkrete id als Query-Parameter übergeben, so wird nur der entsprechende Eintrag zurückgegeben.

2) Ansonsten werden alle Einträge als Array zurückgegeben.

Schritte:

1) Wurde keine id als query parameter angegeben, liste die verfügbaren ids auf.

2) Wenn der angegebene id in der Datenbank enthalten ist, sende den Eintrag zurück.

3) In anderen Fällen sende Statuscode 404 (Not found).

media

16

11.1 Node.js: Einführung

PUT:

Mittels der PUT-Methode können Einträge modifiziert werden.

Dazu muss im Request- Body die id des zu modifizierenden Eintrags sowie die neuen Werte für modul, prof und ects im x-www-urlencoded Format angeben werden.

  • Bei Erfolg wird Statuscode 200 zurückgegeben.

  • Existiert kein Eintrag mit der angegebenen id, wird Statuscode 404 zurückgegeben.

  • Falls in der Anfrage kein modul, prof und ects übergeben wurde, wird Statuscode 400 zurückgegeben

Schritte:

1) Lies den request-body stückweise, setze alle Teile zusammen.

2) Wenn der ganze request-body gelesen wurde, fange mit der Implementation an.

3) Ist der eingelesene Body leer? Falls ja, schicke Statuscode 400 und ende den response mit dem Message "No data transfered". Falls nein, weitere Schritte.

4) Parse body in einen Objekt (Jetzt es ist ein QueryString).

5) Ist id der zu des zu modifizierenden Eintrags gegeben? Falls nein, schicke Statuscode 404 und schließe response mit dem Message "No id transfered" ab. Falls ja, weitere Schritte.

17

11.1 Node.js: Einführung

PUT:

Mittels der PUT-Methode können Einträge modifiziert werden.

Dazu muss im Request- Body die id des zu modifizierenden Eintrags sowie die neuen Werte für modul, prof und ects im x-www-urlencoded Format angeben werden.

  • Bei Erfolg wird Statuscode 200 zurückgegeben.

  • Existiert kein Eintrag mit der angegebenen id, wird Statuscode 404 zurückgegeben.

  • Falls in der Anfrage kein modul, prof und ects übergeben wurde, wird Statuscode 400 zurückgegeben

Schritte:

6) Sind alle neuen Werte für modul, prof, ects da? Wenn nein, schicke Statuscode 400 und schließe response mit dem Message "Info is missing" ab. Falls ja, weitere Schritte.

7) Update den Eintrag unter id.

8) Schicke Statuscode 200.

9) Schließe den response mit dem Message

"Update unter id +Eintrag" ab.

10) BREAK nicht vergessen.

18

11.1 Node.js: Einführung

DELETE:

Mittels der DELETE-Methode wird der Eintrag mit der id gelöscht, die als Parameter der Anfrage übergeben wird.

  • Wird keine id angeben, wird kein Eintrag gelöscht und Statuscode 400 zurückgegeben.

  • Bei erfolgreicher Löschung wird Statuscode 200 zurückgegeben.

Schritte:

1) Gibt es eine id in dem Parameter? Falls nein, schicke Statuscode 400 und schließe response mit dem message

"ID is missing" ab.

2) Falls ja, lösche den Eintrag unter der id, schicke Statuscode 200 und schliße den response ab.

3) BREAK nicht vergessen​.

19

11.1 Node.js: Einführung

default:

Für jede andere HTTP-Methode wird Statuscode 405 zurückgegeben.

Schritte:

1) Gibt es eine id in dem Parameter? Falls nein, schicke Statuscode 400 und schließe response mit dem message

"ID is missing" ab.

2) Falls ja, lösche den Eintrag unter der id, schicke Statuscode 200 und schliße den response ab.

3) BREAK nicht vergessen​.

20

11.2 nginx

Richten Sie nun einen nginx-Webserver ein, der, genau wie in der Vorlesung vorgestellt, als Reverse Proxy für den zuvor implementierten Node.js-Anwendungsserver fungiert.

Idee der Aufgabe:

​Client

​Node.js Server

localhost: 3000

GET

{

id: 0,

id: 1

}

​Client

​Node.js Server

localhost: 3000

​Config proxy to localhost: 3000

localhost: 8080

​nginx Server

21

11.2 nginx

Installieren Sie dazu zunächst nginx auf Ihrem Gerät:

Windows

  1. Laden Sie sich nginx Version 1.23.3 für Windows herunter: https://nginx.org/ download/nginx-1.23.3.zip

  2. Entpacken Sie das heruntergeladene ZIP-Archiv in einen Ordner Ihrer Wahl.

Linux (Ubuntu)

1. Aktualisieren Sie ggf. das Verzeichnis Ihres Package Managers mit dem Befehl: apt-get update

2. Nutzen Sie apt-get, um nginx zu installieren: apt-get install nginx

MacOS

1. Installieren Sie ggf. Homebrew, indem Sie folgenden Befehl im Terminal eingeben:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. Nutzen Sie Homebrew, um nginx zu installieren, indem Sie folgenden Befehl im Terminal eingeben: brew install nginx

22

11.2 nginx

In Unix-basierten System, also Linux und MacOS, ist der Installationsordner von nginx unter dem Pfad

/usr/local/etc/nginx/ oder /opt/homebrew/etc/nginx/nginx.conf zu finden. Sie können nginx jedoch von überall in Ihrem System über das Terminal starten.

In Windows ist der Installationsorder der Ordner, in den Sie das ZIP-Archiv entpackt haben. Um nginx im Windows-Terminal ausführen zu können, müssen Sie sich im Installationsordner befinden.

Sie können nginx mittels folgender Befehle steuern:

nginx Server starten nginx

-s stop Server schnell beenden

nginx -s quit Server kontrolliert herunterfahren

nginx -s reload Serverkonfiguration neu laden

23

11.2 nginx

Die Konfiguration von nginx erfolgt mittels der im Installationsordner befindlichen nginx.conf Datei.

Um nginx wie gewünscht als Reverse Proxy für unseren Node.js-Anwendungsserver zu nutzen, muss diese Datei angepasst werden. Ersetzen Sie dazu in der Datei den vorgefertigten server-Block durch folgenden Code:

server {

listen 8080;

location / {

proxy_pass http://localhost:3000;

}

}

24

11.2 nginx

Davor vs danach

​Client

​Node.js Server

localhost: 3000

GET

{

id: 0,

id: 1

}

​Client

​Node.js Server

localhost: 3000

​Config proxy to localhost: 3000

localhost: 8080

​nginx Server

Tutorium 11

Show answer

Auto Play

Slide 1 / 24

SLIDE