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
Oprettelse af 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 opdatering af brugerposter baseret på:id-parameteren. Ligesom POST-ruten indeholder den en kommentar til håndtering af brugeropdateringslogik; - 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 ved de andre ruter indeholder den en kommentar til håndtering af bruger-sletningslogik.
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 route, der håndterer URL-parametre. URL-parametre er dynamiske dele af en URL, som kan bruges til at sende data til serveren. Sådan fungerer dette eksempel:
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 route defineres med
app.get('/users/:id', ...), hvor:ider en URL-parameter. Det betyder, at når en bruger tilgår en URL som/users/123, vil variablenreq.params.idindeholde værdien123; - Inde i route-handleren tilgås parameteren
:idviareq.params.id; - Kommentaren kan udskiftes med logik til at hente brugerdata baseret på
userIdfra 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, fordi 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 der både findes en specifik og en catch-all-rute:
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 bruger 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