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