В этой части учебника по Express.js мы рассмотрим что такое роутинг или маршрутизация на этом фреймворки, и на мой взгляд это самое важное что стоит знать про это.
Что такое маршрутизация в Express.js:
Маршрутизация это когда зависимо от URL запроса вам даётся какая-то страница или отправляться данные определённые данные.
Обычно в URL записывается путь до файла, который вам нужно открыть, но сейчас делают так, чтобы зависимо от него, вам просто отправлялся шаблон или JSON данные, ещё влияет тип запроса, GET или POST, поэтому это тоже стоит учитывать.
Работа с маршрутизацией в Express.js:
Для работы создадим папку «routes», если её у вас нет, создадим в ней файл «index.js» и вот что в нём пишем:
1 2 3 4 5 6 7 8 | let express = require('express'); let router = express.Router(); router.get('/', function(req, res) { res.send("<h1>Главная страница</h1>"); }); module.exports = router; |
В начале мы тут импортируем сам Express, потом из него создаём маршрутизацию, и делаем ответ на первый наш GET запрос, который отправляем благодаря методу res.send()
, как видите, мы в ответ клиенту отправили заголовок «Главная страница».
Также вы можете заметить, что создаём мы проверку GET запроса благодаря router.get()
, первым параметром он принимает какому URL должен быть запрос, чтобы отправить данные клиенту, второе, это функция, которая ещё принимает два параметра, первый содержит дополнительные данные, которые получает сервер от пользователя, а второе, это сам ответ, благодаря второму мы и формируем ответ клиенту.
Теперь создаём или заходим файл «app.js», внутри него прописываем что-то типа этого:
1 2 3 4 5 6 7 8 | var express = require('express'); var indexRouter = require('./routes/index'); var app = express(); app.use('/', indexRouter); app.listen(3000); |
В начале мы импортируем файл библиотеку Express.js, потом наш маршрут, и создаём приложение Express, назначаем маршрут, делаем это благодаря методу app.use()
(Что это такое в следующей части), туда передаём корневой путь и наш роутинг, который создали выше и запускаем слушатель сервера на порту 3000, но это уже не важно.
Благодаря этому, когда зайдём на локальный сервер увидим наш заголовок, вот что получается в браузере:
Как видите всё сработало, и теперь вы можете таким образом управлять путями и выводить что вам нужно.
Также есть и другие методы, для других типов запросов, кроме GET, вот они все:
- router.get() — GET запрос;
- router.post() — POST запрос;
- router.put() — PUT запрос для создания элементов, похож на POST;
- router.delete() — DELETE запрос для удаления элементов, похож на POST;
Дополнительные параметры URL:
Ещё вы можете встраивать какие-то параметры благодаря знаку двоеточие, вот как это примерно будет выглядеть:
1 2 3 | app.get('/users/:userId', function (req, res) { res.send(req.params.userId) }) |
В параметре req
мы храним значение params, которая в свою очередь хранит переменные из URL, то есть если в строку браузере мы передадим такой URL: «http://localhost:3000/users/51/», то значение req.params.userId
, будет равно «51», и например зависимо от этих параметров, мы можем генерировать наш шаблон или отправлять определённые данные.
Но ещё вы можете использовать другие обозначения в своём URL, их несколько.
Например, символ «?» указывает, что предыдущий символ может встречаться 1 раз или отсутствовать, вот как это будет выглядеть:
1 2 3 | app.get("/bo?k", function (req, res) { res.send(req.url) }); |
Такой URL будет соответствовать запросу «/bk» или «/bok».
Символ «+» указывает, что предыдущий символ может встречаться 1 и более раз:
1 2 3 | app.get("/bo+k", function (req, res) { res.send(req.url) }); |
Такой URL будет соответствовать запросам «/bok», «/book», «/boook» и так далее.
Символ звездочка «*» указывает, что на месте данного символа может находиться любое количество символов:
1 2 3 | app.get("/bo*k", function (req, res) { res.send(req.url) }); |
Такой маршрут будет соответствовать запросам «/bork», «/bonk», «/bor.dak», «/bor/ok» и так далее.
Скобки () позволяют оформить группу символов, которые могут встречаться в запросе:
1 2 3 | app.get("/book(.html)?", function (req, res) { res.send(req.url) }); |
Выражение (.html)?
указывает, что подстрока «.html» может встречаться или отсутствовать в строке запроса, и такой маршрут будет соответствовать запросам «/book» и «/book.html».
Как видите в Exprss.js есть много настроек для URL, но мне кажется, 90% времени вы будите использовать только внедрение переменных и всё, но на всякий случай их стоит знать.
Вывод:
В этой части учебника по Express.js вы прочитали как работает маршрутизация или роутинг в этом фреймворке, также часть статьи мы взяли из сайта METANIT.COM.