Client-Server JS: REST & Express


Kartei Details

Karten 15
Sprache Deutsch
Kategorie Informatik
Stufe Universität
Erstellt / Aktualisiert 13.11.2016 / 28.12.2017
Weblink
https://card2brain.ch/box/abend_6_15_06_2016_clientserver_js_rest_express
Einbinden
<iframe src="https://card2brain.ch/box/abend_6_15_06_2016_clientserver_js_rest_express/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

JSON Web Token

In welcher Form kann ein JSON Web Token übermittelt werden?

 

1. Im HTTP-Header. (Auth-Header)

2. Im Body eines HTTP-Post.

3. Nicht zugelassen: (Direkt In der URL. Grund: http://stackoverflow.com/questions/32722952/is-it-safe-to-put-a-jwt-into-the-url-as-a-query-parameter-of-a-get-request )

4 Cookie  (sehr oft)

Antwort: Alle drei Antworten sind möglich/richtig.

Für was wird die Http Methode "options" verwendet?

Die Methode Options ermöglicht dem Client herauszufinden, was man mit einer Ressource anstellen kann. Die Response auf einen OPTIONS- Request enthält alle verfügbaren und erlaubten Methoden. Z.b kann eine Antwort in einem Header so aussehen:

Allow: GET, HEAD

So kann der Client davon ausgehen, dass der Server auf GET und Head Requests reagiert.

Welche Ausgaben in der Konsole und im Browser werden hier über Express Middleware erzeugt?

...

var router = express.Router();

router.use(
    function(req, res, next) {
        console.log("-first log entry");


router.use(
    function(req, res, next) {
        console.log("-second log entry");
        next();
    });

router.get('/', function(req, res) {
    res.send('-homepage');
});

...


Antworten:

a)
console:
    -first log entry
    -second log entry
Browser:
   -homepage

b)
console:
    -first log entry
Browser:
    <no respond>

c)
console:
    -first log entry
Browser:
    -homepage

d)
console:
    -second log entry
Browser:
    -homepage

b)

Innerhalb der Funktion beim ersten "router.use()" fehlt die Weiterleitung mit der next() - Funktion.

Es wird nur der "first log entry" erzeugt, alle weiteren Routen werden nicht ausgeführt!

http://expressjs.com/en/guide/routing.html

-> Route handlers

Nenne zwei Möglichkeiten zur Versionierung einer REST-API.

  •     Versionsnummer wird als Media-Type im Accept-Header übergeben. Beispiel:

Accept: application/vnd.company.conference.track-v2+json

 

  •     Versionsnummer wird als Qualifier dem Media-Type im Accept-Header angehängt. Beispiel:

Accept: application/vnd.company.conference.track+json;v=2

 

  •     Version wird in der URI übergeben. Beispiel:

GET /api/v2/conference/tracks/6

Aus welchen drei Komponenten besteht das MVC-Pattern und für was sind sie zuständig?

  • Model

Daten und Datenaufbereitung

 

  • View

Darstellung der Daten aus dem Model

  • Controller

Verknüpfung View mit Daten

Was sind die drei Parameter einer Custom-Middleware?

- request
- response
- next

Was bedeutet CORS (Cross-Origin Resource Sharing) im Zusammenhang mit REST

Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der Webbrowsern oder auch anderen Webclients Cross-Origin-Requests (Anfrage einer Ressource von einer anderen Domain) ermöglicht. Zugriffe dieser Art sind normalerweise durch die Same-Origin-Policy (SOP) untersagt.

Ob ein Cross-Origin-Request möglich ist oder nicht, kann der Webserver mittels HTTP Header dem Client übermitteln.

CORS wird vor allem bei öffentlichen REST-APIs benötigt.

Beispiel HTTP Header, welcher die HTTP Methode GET für die Domain http://foo.example freigibt:

Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: GET

Für was steht HATEOAS ? Was sind Vor- und Nachteile?

HATEOAS steht für "Hypermedia as the Engine of Application State".

  • Prozessgedanke in der Ressource
  • Media-Typen beschreiben die Ressource
  • Aktionen werden ausgeführt beim folgen von Links
  • Jede Antwort beinhaltet den "ApplicationState"
  • Selbstbeschreibende API’s erzeugen Flexibilität
  • Clients können die API «erforschen» ohne Dokumentation und Anleitung

Vorteile:

  • Inline Dokumentation
  • Explorable API
  • Einfachere Clients, die URI ist sicher korrekt und aktuell.

Nachteile:

  • aufwändig auf der Server-Seite

REST versus SOAP. Was sind die Unterschiede?

  • SOAP fordert eine grössere Bindung an die Clients --> bei einer Veränderung des Servers mussder Client angepasst werden
  • REST ist freundlicher für Netzwerkkomponenten und Administratoren (Firewall-Rulesauf URI oder HTTP-Methoden)
  • SOAP hat einen grossen Overhead
  • REST lässt sich durch seine Statuslosigkeit sehr einfach skalieren, SOAP ist nicht zustandslos
  • SOAP ist einStandard, REST nicht --> beliebige Repräsentationen
  • REST erfüllt ROA, SOAP nicht
  • REST ist auf  HTTP beschränkt (einfacher), SOAP nicht (http, jms, etc)

Welche Dateitypen werden von expressjs mit dem Befehl express.static an den browser gesendet ?

.html

.js

.css 

and images

Welche Möglichkeiten gibt es die Daten auf dem Server zu speichern?

  • In Memory: Array
  • JSON
  • NoSQL-Datenbanken
  • Sql-Datenbanken

Was ist der Unterschied zwischen POST und PUT?

  • PUT ist idempotent: wird derselbe Call mehrfach ausgeführt, verändert sich nichts. POST ist nicht idempotent.
  • Beim PUT gibt der Client die URI der Ressource mit. Wenn die Ressource noch nicht existiert, wird sie unter dieser URI angelegt, ansonsten wird die überschrieben. Beim POST wird eine Ressource angelegt und die URI durch den Server generiert und in der Antwort an den Client zurückgegeben.

Was ist eine Middleware?

Eine Art Pipeline bei welcher man sich dazwischen einhängen kann.

Welche Datentypen gibt es in JSON?

  • Boolean
  • Number
  • String
  • Array
  • Object
  • Null (könnte als Object betrachtet werden)

Was gibt es für Standardmethoden bei ROA? Welche werden effektiv benutzt?

  • GET
  • POST
  • PUT
  • DELETE
  • HEAD
  • OPTIONS

Benutzt werden effektiv:

  • GET
  • POST
  • PUT
  • DELETE