Створення та Керування Маршрутами в Express.js
Свайпніть щоб показати меню
Розгляньмо ці практичні приклади створення маршрутів у Express.js детальніше.
Базові маршрути
Створення простої програми Express.js з маршрутами для різних HTTP-методів. Кожен маршрут обробляє певний HTTP-запит і надсилає відповідь клієнту.
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-маршрут: Відповідає на GET-запит за кореневою адресою (
/). Користувачі, які відкривають головну сторінку застосунку, отримують повідомлення "This is the homepage."; - POST-маршрут: Відповідає на POST-запит за адресою
/users. Зазвичай використовується для створення нових записів користувачів. Маршрут містить коментар для реалізації логіки створення користувача, який можна замінити на відповідну реалізацію; - PUT-маршрут: Відповідає на PUT-запит за адресою
/users/:id. Призначений для оновлення записів користувачів за параметром:id. Як і у POST-маршруті, містить коментар для реалізації логіки оновлення користувача; - DELETE-маршрут: Відповідає на DELETE-запит за адресою
/users/:id. Використовується для видалення записів користувачів за параметром:id. Як і в інших маршрутах, містить коментар для реалізації логіки видалення користувача.
Примітка
Якщо ви не впевнені щодо URL або бажаєте переглянути це поняття, зверніться до наступної статті: URL vs URI vs URN
Обробка параметрів URL
Розглянемо створення маршруту, який обробляє параметри URL. Параметри URL — це динамічні частини URL, які можна використовувати для передачі даних на сервер. Ось як працює цей приклад:
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/:id', ...), де:id— це параметр URL. Це означає, що коли користувач звертається до URL на кшталт/users/123, зміннаreq.params.idміститиме значення123; - Усередині обробника маршруту параметр
:idдоступний черезreq.params.id; - Коментар можна замінити логікою для отримання даних користувача на основі
userId, отриманого з параметра URL; - Відповідь клієнту містить інформацію про користувача, ідентифікованого параметром
:id.
Порядок і пріоритет маршрутів
Порядок визначення маршрутів має значення, оскільки Express використовує стратегію "перший збіг — переможець". Буде виконано перший маршрут, який відповідає запиту. У цьому прикладі розглядається ситуація, коли існує як конкретний, так і універсальний маршрут:
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.');
});
- Перший маршрут,
app.get('/users/:id', ...), є конкретним маршрутом, який відповідає URL-адресам на кшталт/users/123. Він обробляє запити з певним ідентифікатором користувача; - Другий маршрут,
app.get('/users/*', ...), є універсальним маршрутом для загальних запитів, пов'язаних із користувачами. Він використовує символ підстановки (*), щоб відповідати будь-якій URL-адресі, яка починається з/users/, наприклад,/users/settings.
У цій ситуації порядок має вирішальне значення. Конкретний маршрут слід визначати перед універсальним, щоб забезпечити його пріоритетність. Якщо спочатку визначити універсальний маршрут, він відповідатиме всім URL-адресам, що починаються з /users/, і конкретний маршрут не зможе обробити запити з ідентифікатором користувача.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат