Premium Partner

Abend 6: 15.06.2016 - Client-Server JS: REST & Express

Client-Server JS: REST & Express

Client-Server JS: REST & Express


Kartei Details

Karten 15
Sprache Deutsch
Kategorie Informatik
Stufe Universität
Erstellt / Aktualisiert 13.11.2016 / 28.12.2017
Lizenzierung Keine Angabe
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