Oprettelse og Håndtering af Ruter i Express.js
Lad os undersøge disse praktiske eksempler på oprettelse af ruter i Express.js mere detaljeret.
Grundlæggende ruter
Lad os oprette en simpel Express.js-applikation med ruter for forskellige HTTP-metoder. Hver rute håndterer en specifik HTTP-anmodning og sender et svar tilbage til klienten.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('This is the homepage.');
});
app.post('/users', (req, res) => {
// Handle user creation logic here.
res.send('User created.');
});
app.put('/users/:id', (req, res) => {
// Handle user update logic here.
res.send(`User ${req.params.id} updated.`);
});
app.delete('/users/:id', (req, res) => {
// Handle user deletion logic here.
res.send(`User ${req.params.id} deleted.`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
- GET-rute: Denne rute svarer på en GET-anmodning ved rod-URL'en (
/). Brugere, der tilgår applikationens forside, modtager beskeden "This is the homepage."; - POST-rute: Denne rute svarer på en POST-anmodning ved URL'en
/users. Den bruges typisk til oprettelse af nye brugerposter. Ruten indeholder en kommentar til håndtering af brugeroprettelseslogik, som kan erstattes med den faktiske logik; - PUT-rute: Denne rute svarer på en PUT-anmodning ved URL'en
/users/:id. Den er designet til at opdatere brugerposter baseret på:id-parameteren. Ligesom POST-ruten indeholder den en kommentar til håndtering af opdateringslogik; - DELETE-rute: Denne rute svarer på en DELETE-anmodning ved URL'en
/users/:id. Den bruges til at slette brugerposter baseret på:id-parameteren. Som med de andre ruter indeholder den en kommentar til håndtering af sletningslogik.
Bemærk
Hvis du er usikker på URL'en eller ønsker at gennemgå konceptet, henvises der til følgende artikel: URL vs URI vs URN
Håndtering af URL-parametre
Fokus på oprettelse af en rute, der håndterer URL-parametre. URL-parametre er dynamiske dele af en URL, som kan bruges til at overføre data til serveren. Eksemplet fungerer således:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
- En rute defineres med
app.get('/users/:id', ...), hvor:ider en URL-parameter. Dette betyder, at når en bruger tilgår en URL som/users/123, vil variablenreq.params.idindeholde værdien123; - Inde i rutehåndteringen tilgås parameteren
:idviareq.params.id; - Kommentaren kan erstattes med logik til at hente brugerdata baseret på den
userId, der er opnået fra URL-parameteren; - Til sidst sendes et svar til klienten med information om brugeren identificeret af
:id-parameteren.
Rækkefølge og Prioritering af Ruter
Rækkefølgen, hvori ruter defineres, er vigtig, da Express anvender en "første match vinder"-strategi. Den første rute, der matcher, vil blive udført. I dette eksempel betragtes et scenarie, hvor både en specifik og en catch-all-rute er til stede:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
app.get('/users/*', (req, res) => {
// Handle generic user-related requests.
res.send('User-related request.');
});
- Den første rute,
app.get('/users/:id', ...), er en specifik rute, der svarer på URL'er som/users/123. Den håndterer forespørgsler med et specifikt bruger-ID; - Den anden rute,
app.get('/users/*', ...), er en catch-all-rute til generelle brugerrelaterede forespørgsler. Den anvender et wildcard (*) til at matche enhver URL, der starter med/users/, såsom/users/settings.
I dette scenarie er rækkefølgen afgørende. Den specifikke rute skal defineres før catch-all-ruten for at sikre, at den får forrang. Hvis catch-all-ruten defineres først, vil den matche alle URL'er, der starter med /users/, og den specifikke rute vil ikke få mulighed for at håndtere forespørgsler med et bruger-ID.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain more about how URL parameters work in Express.js?
What happens if I reverse the order of the specific and catch-all routes?
Can you give an example of handling multiple URL parameters in a route?
Awesome!
Completion rate improved to 2.56
Oprettelse og Håndtering af Ruter i Express.js
Stryg for at vise menuen
Lad os undersøge disse praktiske eksempler på oprettelse af ruter i Express.js mere detaljeret.
Grundlæggende ruter
Lad os oprette en simpel Express.js-applikation med ruter for forskellige HTTP-metoder. Hver rute håndterer en specifik HTTP-anmodning og sender et svar tilbage til klienten.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('This is the homepage.');
});
app.post('/users', (req, res) => {
// Handle user creation logic here.
res.send('User created.');
});
app.put('/users/:id', (req, res) => {
// Handle user update logic here.
res.send(`User ${req.params.id} updated.`);
});
app.delete('/users/:id', (req, res) => {
// Handle user deletion logic here.
res.send(`User ${req.params.id} deleted.`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
- GET-rute: Denne rute svarer på en GET-anmodning ved rod-URL'en (
/). Brugere, der tilgår applikationens forside, modtager beskeden "This is the homepage."; - POST-rute: Denne rute svarer på en POST-anmodning ved URL'en
/users. Den bruges typisk til oprettelse af nye brugerposter. Ruten indeholder en kommentar til håndtering af brugeroprettelseslogik, som kan erstattes med den faktiske logik; - PUT-rute: Denne rute svarer på en PUT-anmodning ved URL'en
/users/:id. Den er designet til at opdatere brugerposter baseret på:id-parameteren. Ligesom POST-ruten indeholder den en kommentar til håndtering af opdateringslogik; - DELETE-rute: Denne rute svarer på en DELETE-anmodning ved URL'en
/users/:id. Den bruges til at slette brugerposter baseret på:id-parameteren. Som med de andre ruter indeholder den en kommentar til håndtering af sletningslogik.
Bemærk
Hvis du er usikker på URL'en eller ønsker at gennemgå konceptet, henvises der til følgende artikel: URL vs URI vs URN
Håndtering af URL-parametre
Fokus på oprettelse af en rute, der håndterer URL-parametre. URL-parametre er dynamiske dele af en URL, som kan bruges til at overføre data til serveren. Eksemplet fungerer således:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
- En rute defineres med
app.get('/users/:id', ...), hvor:ider en URL-parameter. Dette betyder, at når en bruger tilgår en URL som/users/123, vil variablenreq.params.idindeholde værdien123; - Inde i rutehåndteringen tilgås parameteren
:idviareq.params.id; - Kommentaren kan erstattes med logik til at hente brugerdata baseret på den
userId, der er opnået fra URL-parameteren; - Til sidst sendes et svar til klienten med information om brugeren identificeret af
:id-parameteren.
Rækkefølge og Prioritering af Ruter
Rækkefølgen, hvori ruter defineres, er vigtig, da Express anvender en "første match vinder"-strategi. Den første rute, der matcher, vil blive udført. I dette eksempel betragtes et scenarie, hvor både en specifik og en catch-all-rute er til stede:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
app.get('/users/*', (req, res) => {
// Handle generic user-related requests.
res.send('User-related request.');
});
- Den første rute,
app.get('/users/:id', ...), er en specifik rute, der svarer på URL'er som/users/123. Den håndterer forespørgsler med et specifikt bruger-ID; - Den anden rute,
app.get('/users/*', ...), er en catch-all-rute til generelle brugerrelaterede forespørgsler. Den anvender et wildcard (*) til at matche enhver URL, der starter med/users/, såsom/users/settings.
I dette scenarie er rækkefølgen afgørende. Den specifikke rute skal defineres før catch-all-ruten for at sikre, at den får forrang. Hvis catch-all-ruten defineres først, vil den matche alle URL'er, der starter med /users/, og den specifikke rute vil ikke få mulighed for at håndtere forespørgsler med et bruger-ID.
Tak for dine kommentarer!