Abend 5: 08.06.2016 - Client-Server mit JS: HTTP & Node.js
Client-Server mit JS: HTTP & Node.js
Client-Server mit JS: HTTP & Node.js
-
- 1 / 24
-
Flashcards
Nenne 3 Networking Tools
- ping
- tracert / traceroute
- nslookup
Wie gut ist die ES2015 Unterstützung von NodeJS ? Nenne drei ES2015 Features.
Seit der Node-Version 4.46 wurde begonnen ES2015 zu unterstützen.
Mit der aktuellen Version 6.5.0 wird eine Vielzahl von ES2015 Features unterstützt.
z. B.
let, const
promises
template literals
class
Im Detail nachschlagen kann man dies unter http://node.green.
Nicht unterstützt wird die ES2015 Modulsyntax, da mit ES2015 die diskutierte Spezifikation des module-loaders ES6 Specification Draft Rev 27, Section 15
nicht in den Standard übernommen wurde.
Als Workaround wird die ES2015 Modulsyntax von Babel oder typescript in das Modulformat commonJS transpiliert.
Was ist Node.js?
Wie funktioniert der "Etag"-Header?
Ein Etag-Header beinhaltet einen Hash, der den Stand einer Resource auf dem Server repräsentiert. Er dient dem Caching.
Bei der ersten Anfrage einer Resource durch den Client wird vom Server ein "Etag"-Header in der Response mitgeliefert. Der Client merkt sich lokal den Wert dieses Headers und sendet ihn bei der nächsten Anfrage der gleichen Resource im Request-Header wieder als Wert des "If-None-Match"-Headers mit. Der Server vergleicht den Stand der Resource mit dem "If-None-Match"-Wert des Clients und wenn sich dieser inzwischen nicht geändert hat, wird ein HTTP-Statuscode 304 an den Client zurückgegeben; die Resource selbst wird dann nicht nochmals übertragen. Nur wenn der Stand der Resource nicht mehr dem Wert der Clientanfrage entspricht, wird die Resource wieder an den Client gesendet. Damit wird vermieden, dass unnötig Daten mehrfach übertragen werden.
TL;DR zum Thema aus den Google Developer Docs
- Ein Validierungstoken wird vom Server über den ETag-HTTP-Header übertragen.
- Ein Validierungstoken ermöglicht effiziente Aktualisierungsprüfungen von Ressourcen. Es werden keine Daten übertragen, wenn sich die Ressource nicht geändert hat.
TCP/IP
Gib die richtige Antwort an:
a. Ein TCP-Paket wird in der Nutzlast eines IP-Pakets übermittelt
b. Ein IP-Paket wird in der Nutzlast eines TCP-Pakets übermittelt
a:
TCP liegt im OSI-Modell auf der Schicht 4 (Transport), während IP auf der Schicht 3 (Network) liegt. Die übergeordnete Schicht nutzt die Dienstleistung der untergeordneten Schicht. Somit wird ein TCP-Paket als Nutzlast eines IP-Pakets zum richtigen Host transportiert.
Was sind Stream in Node.js?
- Core Konzept von Node.js
- Stück für Stück bearbeiten von Daten
- Definiert durch ein Interface
- Basiert auf EventEmitter
Wie sind die HTTP response status codes klassifiziert? Nenne pro Klasse je 2 Beispiele
1xx Informational
- 100 Continue
- 101 Switching Protocols
2xx Successful
- 200 OK
- 204 No Content
3xx Redirection
- 301 Moved Permanently
- 305 Use Proxy (since HTTP/1.1)
4xx Client Error
- 400 Bad Request
- 404 Not Found
5xx Server Error
- 500 Internal Server Error
- 503 Service Unavailable
Was ist der Unterschied in der Versionsdeklaration in einem npm package.json File von "~1.2.3" und "^1.2.3"
"Tilde" sucht die neueste "minor" Version (mittlere Ziffer). "~1.2.3" aktualisert auf die aktuellste Version mit einer "2" in der Mitte (z.B. 1.2.x), nicht aber einer drei (z.B. 1.3.0).
"Caret" sucht die neueste "major" Version (erste Ziffer). "^1.2.3" aktualisert auf die aktuellste Version mit einer "1" an erster Stelle (z.B. 1.x.x), nicht aber einer "2" (z.B. 2.0.0).
Beim Verzicht von "Tilde" und "Caret" wird die angegebene Version heruntergeladen.
Ein Cookie kann mit HTTPOnly deklariert werden. Was bewirkt diese Deklaration?
Das Cookie kann nicht mittels Javascript ausgelesen werden. Es wird nur mit dem Request mitgeschickt. Damit kann das Cookie vor Cross-Site-Scripting Attacken geschützt werden.
Aus welchen Schichten besteht das OSI Modell und wie heissen sie ?
7. Application
6. Presentation
5. Session
4. Transport
3. Network
2. Data Link
1. Physical
Wofür kann Ping verwendet werden?
Welche Ausgabe wird mit console.log in app.js erzeugt?
NodeJS:
app.js
...
var utilModule = require('./utilSample.js');
...
console.log('Ausgabe: ' + utilModule.modUtilOne());
console.log('Ausgabe: ' + utilModule.utilThree());
...
utilSample.js
var utilSample = {
utilOne : function(){return "utilOne";},
utilTwo : function(){return "utilTwo";}
}
exports.utilThree = function(){return "utilThree";}
module.exports = {
modUtilOne : utilSample.utilOne,
modUtilTwo : utilSample.utilTwo
}
Antworten:
a)
Ausgabe: utilOne
Ausgabe: utilThree
b)
Ausgabe: utilOne
Ausgabe: undefined
c)
Ausgabe: TypeError utilModule.modUtilOne is not a function
Ausgabe: utilThree
d)
Ausgabe: utilOne
Ausgabe: TypeError utilModule.utilThree is not a function
d)
Beschreibung:
Mit "module.exports = .." wird ein Objekt zurückgegeben, welches über "require" zugewiesen wird.
Zusätzliche "exports" - Statements werden dann nicht beachtet, im Beispiel ist "utilThree" nicht bekannt.
Es werden nur die über "module.exports = .." zugewiesenen Funktionen/Properties exportiert.
Wird nicht das Objekt "module.exports = ..", sondern einzelne named properties exportiert, funktioniert es:
exports.utilThree = function(){return "utilThree";};
module.exports.modUtilOne = utilSample.utilOne;
module.exports.modUtilTwo = utilSample.utilTwo;
Wann was verwendet werden kann bei NodeJS Module Patterns:
https://darrenderidder.github.io/talks/ModulePatterns/#/
Was ist der Unterschied zwischen Callbacks und Events ?
- Callbacks sind jeweils 1:1 Verbindungen
Werden verwendet wenn es nur 1 "Interessent" für diese Funktion gibt
- Events sind 1:n Verbindungen
Bei den Events hingegen gibt es mehrere "Interessenten" die diese Funktion nutzen
Wann sollte eine PUT und wann ein POST verwendet werden?
PUT sollte beim Verändern/Aktualisieren von Datensätzen verwendet werden, kann aber auch für das Erstellen genutzt werden
POST wird nur beim Erstellen neuer Datensätze verwendet.
How can you provide a hyperlink to a section in the same document?
- Specify a named section in the document with the name attribute : <div name="secton1" > Div Content </div>
- Provide a link to the named section: <a href=#sectiion1"> Go to Section 1 </a>
- If you do not provide a name in the href: href="#" then the link jumps to top of the document
What are the main purposes behind the use of a proxy server?
- Request forwarding and response forwarding
- Proxy can act as client when forwarding a request and as a server when forwarding the response
- Proxy server can act as access control
- Proxy server can be used for caching
What does a typical HTTP response consists of?
- An initial response line
- the headers
- a blank line
- body with requested data
Http Protcol is
Http Networking: Protocol and default port number
- http: 80 default http port
- ftp: 20 for data, 21 for control
- smtp: 25 simple mail transfer protocol
Http Networking: With what tool can you connect to a server?
with telnet:
telnet xyz.com 80
Http Networking: TCP provdes reliable service to the application level
- TCP provides explicit error control on ip packages
- It checks to find out if all parts of a message have been transmitted
- If packages are lost, it arranges for a retransmission
Http Networking: IP is an unreliable protcol because
- ip packages can be lost
- ip package can contain error
- ip package can arrive out of order
Http Networking: Why is the transport layer called host-to-host layer?
It is at this layer that two programs running on two end hosts
directly communicate with each other
Mapping of TCP/IP protocol stack to OSI seven-layer model
- Datalink -> Datalink, Physical
- IP -> Network
- TCP -> Transport
- Application -> Session, Presentation, Application