[S11L2] Routing Express Flashcards
Was ist Routing?
- Eines der Hauptfeatures von Express
- Mapped einkommende Requests zu den entsprechenden handler functions
- CRUD Operationen auf unserer Server Side Application
Anhand von welchen Kriterien routed Express?
- Anhand von URL und genutzter HTTP Methode
- Oft nur eine Route für viele HTTP Methoden
- Daher ist der Server organisiert und clean code
Wie kann man Stringified HTML als Server Response auf HTTP Requests zurücksenden?
.send(‘<h1>Contact Form</h1>’)
Auf welchen Wegen kann man Daten an einen Endpoint senden?
- request body Object
- Key/Value Pair in dem Query String
- Dynamic Routing/Route Parameters
Was sind Route Parameters?
- Werden genutzt um Informationen über die Ressource die angefragt wird zu senden
- Oftmals werden ID’s dynamisch in die URL eingefügt
server.delete(‘/hobbits/:id’, (req, res) => {
constr id = req.params.id;
-Hier wird durch den Server für alle ankommenden HTTP Requests mit der Methode DELETE alles nach /hobbits/ auf ID params.id gemapped und zugängig gemacht
Was sind Query Strings?
- HTTP ist stateless
- Man kann daher einfach Daten in der URL durch Query String kodieren
- www.sascha.de/user?key=value&anotherkey=anothervalue
Wie kann man im Express Server auf Query String zugreifen?
server.get('/hobbits', (req, res) => { //query string parameter werden zu req.query geadded const sortField = req.query.sortby || 'id'; const hobbits = [ { id: 1, name: 'Samwise Gamgee' }, { id: 2, name: 'Sascha Majewsky' } ];
const response = hobbits.sort((a,b) => a[sortField] < b[sortField] ? -1 : 1); res.status(200).json(response); });
Wie kann man im Express Server auf den Request Body zugreifen?
-Wird oft bei POST und PUT genutzt, da Infos mitgeschickt werden müssen
let nextID =3;
server.post('/hobbits', (req, res) => { const hobbit = req.body; hobbit.id = nextId++; hobbits.push(hobbit); res.status(201).json(hobbits); });
Was ist REST?
-REpresentation State Transfer
-1999 erfunden
-Eine Empfehlung und kein Standard
-
Was sind die Prinzipien von REST?
- Auf alles was man zugreift sind Resourcen
- Alle Resourcen sind via spezifischen URI verfügbar
- Resourcen können mehrere Repräsentationen haben
- Die Kommunikation geschieht über stateless HTTP protocol
- Management der Resourcen wird per HTTP Methoden ausgeführt
Was sind die Einschränkungen von REST?
-Alles ist Client - Server based
(Der Client ist die Web App, die Daten haben will und der Server ist der Server, welche Zugriff auf Daten besitzt)
-Viele Clients können auf einen Server zugreifen
-Responses sind Cacheable und verbessern damit die Performance
-Uniform Interfaces (Routes) sind alle gleich ansprechbar und erfordern nicht verschiedene Logiken zum nutzen
-Layered Systems, welche zwischen dem Client und Server sitzen können (Logging; authentication, Middleware)
-Code-On-Demand Sprache über JSON, so dass beide Parteien wissen wenn ein Request erfolgreich ist erhalte ich Code, welchen ich verarbeiten kann
Was ist der Express Router?
- Wachsende Applikationen brauchen mehr Resources und mehr Routes
- Wenn die server.js Datei zu komplex wird, sollte man sie modular in kleinere aufteilen
- Hierbei können userRouter, todoRouter etc erstellt werrden und für jeden die baseRoute /users/ oder /todos/ angegeben werden. Innerhalb der neuen js Datei kann dann auf die Route / verwiesen werden, da diese bereits an /users/ gemapped ist
Wie müssen REST Routes strukturiert sein?
/listAllHubs GET /hubs
/createHub POST /hubs
/updateHub PUT /hubs
/listHubMessages GET /hubs/:id/messages
/listPostsComments GET /posts/id/comments
/countPostComments GET posts/:id/comments with an extra propoerty { comments, count }
Wie exportiert man in Node.js?
- JavaScript Files im Browser können einander sehen, da sie im Global Space definiert sind
- In Node sind Dateien self contained
-In Node muss man Dateien so exportieren:
module.exports = {
find,
findById
}
Wie sind Query Strings für HTTP Requests aufgebaut?
- Domain
- ?
- resource=id
- &nextResource=id
http://localhost:5000/hubs?limit=3&page=2&sortby=name&sortdir=desc