Reittien Luominen ja Hallinta Express.js:ssä
Tarkastellaan näitä käytännön esimerkkejä reittien luomisesta Express.js:ssä tarkemmin.
🌟 Perusreitit
Luodaan yksinkertainen Express.js-sovellus, jossa on reitit eri HTTP-metodeille. Jokainen reitti käsittelee tietyn HTTP-pyynnön ja lähettää vastauksen asiakkaalle.
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-reitti: Tämä reitti vastaa GET-pyyntöön juuriosoitteessa (
/). Sovelluksen etusivulle siirtyvät käyttäjät saavat viestin "This is the homepage."; - POST-reitti: Tämä reitti vastaa POST-pyyntöön osoitteessa
/users. Sitä käytetään tyypillisesti uusien käyttäjätietueiden luomiseen. Reitillä on kommentti käyttäjän luontilogiikan käsittelyä varten, joka voidaan korvata varsinaisella toteutuksella; - PUT-reitti: Tämä reitti vastaa PUT-pyyntöön osoitteessa
/users/:id. Se on tarkoitettu käyttäjätietueiden päivittämiseen:id-parametrin perusteella. Kuten POST-reitillä, myös tässä on kommentti päivityslogiikan käsittelylle; - DELETE-reitti: Tämä reitti vastaa DELETE-pyyntöön osoitteessa
/users/:id. Sitä käytetään käyttäjätietueiden poistamiseen:id-parametrin perusteella. Kuten muissakin reiteissä, mukana on kommentti poistologiikan käsittelyä varten.
Huomio
Jos olet epävarma URL-osoitteesta tai haluat kerrata käsitteen, tutustu seuraavaan artikkeliin: URL vs URI vs URN
🌟 Käsittele URL-parametreja
Tarkastellaan reitin luomista, joka käsittelee URL-parametreja. URL-parametrit ovat dynaamisia osia URL-osoitteessa, joita voidaan käyttää tiedon välittämiseen palvelimelle. Näin tämä esimerkki toimii:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
- Reitti määritellään käyttämällä
app.get('/users/:id', ...), jossa:idon URL-parametri. Tämä tarkoittaa, että kun käyttäjä siirtyy osoitteeseen/users/123, muuttujareq.params.idsisältää arvon123; - Reitin käsittelijässä päästään käsiksi
:id-parametriin käyttämälläreq.params.id; - Kommentin tilalle voidaan lisätä logiikka, joka hakee käyttäjätiedot URL-parametrista saadun
userId:n perusteella; - Lopuksi vastataan asiakkaalle tiedoilla käyttäjästä, jonka tunniste on
:id-parametrissa.
🌟 Reittien järjestys ja priorisointi
Reittien määrittelyjärjestyksellä on merkitystä, koska Express käyttää "first-match-wins"-strategiaa. Ensimmäinen sopiva reitti suoritetaan. Tässä esimerkissä tarkastellaan tilannetta, jossa käytössä on sekä tarkka että yleinen reitti:
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.');
});
- Ensimmäinen reitti,
app.get('/users/:id', ...), on tarkka reitti, joka vastaa URL-osoitteisiin kuten/users/123. Se käsittelee pyynnöt, joissa on tietty käyttäjätunnus; - Toinen reitti,
app.get('/users/*', ...), on yleisreitti käyttäjiin liittyville pyynnöille. Se käyttää jokerimerkkiä (*) vastatakseen kaikkiin URL-osoitteisiin, jotka alkavat/users/, kuten/users/settings.
Tässä tilanteessa järjestys on ratkaiseva. Tarkka reitti tulee määritellä ennen yleisreittiä, jotta se saa etusijan. Jos yleisreitti määritellään ensin, se vastaa kaikkiin /users/-alkuisiin osoitteisiin, eikä tarkka reitti pääse käsittelemään käyttäjätunnuksella varustettuja pyyntöjä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain more about how route order affects request handling in Express.js?
What happens if I reverse the order of the specific and catch-all routes?
Can you give more examples of using URL parameters in routes?
Awesome!
Completion rate improved to 2.56
Reittien Luominen ja Hallinta Express.js:ssä
Pyyhkäise näyttääksesi valikon
Tarkastellaan näitä käytännön esimerkkejä reittien luomisesta Express.js:ssä tarkemmin.
🌟 Perusreitit
Luodaan yksinkertainen Express.js-sovellus, jossa on reitit eri HTTP-metodeille. Jokainen reitti käsittelee tietyn HTTP-pyynnön ja lähettää vastauksen asiakkaalle.
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-reitti: Tämä reitti vastaa GET-pyyntöön juuriosoitteessa (
/). Sovelluksen etusivulle siirtyvät käyttäjät saavat viestin "This is the homepage."; - POST-reitti: Tämä reitti vastaa POST-pyyntöön osoitteessa
/users. Sitä käytetään tyypillisesti uusien käyttäjätietueiden luomiseen. Reitillä on kommentti käyttäjän luontilogiikan käsittelyä varten, joka voidaan korvata varsinaisella toteutuksella; - PUT-reitti: Tämä reitti vastaa PUT-pyyntöön osoitteessa
/users/:id. Se on tarkoitettu käyttäjätietueiden päivittämiseen:id-parametrin perusteella. Kuten POST-reitillä, myös tässä on kommentti päivityslogiikan käsittelylle; - DELETE-reitti: Tämä reitti vastaa DELETE-pyyntöön osoitteessa
/users/:id. Sitä käytetään käyttäjätietueiden poistamiseen:id-parametrin perusteella. Kuten muissakin reiteissä, mukana on kommentti poistologiikan käsittelyä varten.
Huomio
Jos olet epävarma URL-osoitteesta tai haluat kerrata käsitteen, tutustu seuraavaan artikkeliin: URL vs URI vs URN
🌟 Käsittele URL-parametreja
Tarkastellaan reitin luomista, joka käsittelee URL-parametreja. URL-parametrit ovat dynaamisia osia URL-osoitteessa, joita voidaan käyttää tiedon välittämiseen palvelimelle. Näin tämä esimerkki toimii:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
- Reitti määritellään käyttämällä
app.get('/users/:id', ...), jossa:idon URL-parametri. Tämä tarkoittaa, että kun käyttäjä siirtyy osoitteeseen/users/123, muuttujareq.params.idsisältää arvon123; - Reitin käsittelijässä päästään käsiksi
:id-parametriin käyttämälläreq.params.id; - Kommentin tilalle voidaan lisätä logiikka, joka hakee käyttäjätiedot URL-parametrista saadun
userId:n perusteella; - Lopuksi vastataan asiakkaalle tiedoilla käyttäjästä, jonka tunniste on
:id-parametrissa.
🌟 Reittien järjestys ja priorisointi
Reittien määrittelyjärjestyksellä on merkitystä, koska Express käyttää "first-match-wins"-strategiaa. Ensimmäinen sopiva reitti suoritetaan. Tässä esimerkissä tarkastellaan tilannetta, jossa käytössä on sekä tarkka että yleinen reitti:
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.');
});
- Ensimmäinen reitti,
app.get('/users/:id', ...), on tarkka reitti, joka vastaa URL-osoitteisiin kuten/users/123. Se käsittelee pyynnöt, joissa on tietty käyttäjätunnus; - Toinen reitti,
app.get('/users/*', ...), on yleisreitti käyttäjiin liittyville pyynnöille. Se käyttää jokerimerkkiä (*) vastatakseen kaikkiin URL-osoitteisiin, jotka alkavat/users/, kuten/users/settings.
Tässä tilanteessa järjestys on ratkaiseva. Tarkka reitti tulee määritellä ennen yleisreittiä, jotta se saa etusijan. Jos yleisreitti määritellään ensin, se vastaa kaikkiin /users/-alkuisiin osoitteisiin, eikä tarkka reitti pääse käsittelemään käyttäjätunnuksella varustettuja pyyntöjä.
Kiitos palautteestasi!