Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Динамические url в Node.js + express


В проектах, если они не статические, необходимы url с динамической частью. К примеру есть url: http://site.ru/category/name Вот всё что идёт до /name - это статическая часть, она изменяемая, но постоянна так скажем. name - это изменяемая часть, которая позволит решать некие задачи, например получать статьи.

В одной из прошлых статей мы рассмотрели как создать страницы со статическими url. Теперь пришло время разобраться с динамическими url в node.js.

Тут всё до безобразия просто.

server.get("/category/:name", (request, response)=>{  
   var name = request.params.name;  
   response.send("<h2>Категория "+name+"</h2>");  
});

Стандартная функция, указывающая на то, какой url, какой ответ отдаст.
"/category/:name" здесь есть одно отличие, которое начинается на ":"(двоеточие) - это динамическая часть. После двоеточия указываем название параметра, через которое можно получить его значение.

Чтобы получить его значение необходимо обратиться к объекту request

Запишем в переменную значение name.

var name = request.params.name;  

Вот так просто мы сделали наши url динамическими.

Но давайте представим, что мы хотим ограничить символы, которые хотим получить, например, только буквы.

Просто напросто можно указать первым аргументом метода get регулярное выражение "/category/:name(\[a-z\]*)"

server.get("/category/:name([a-z]*)", (request, response)=>{  
   var name = request.params.name;  
   response.send("<h2>Категория "+name+"</h2>");  
});

Допустим, мы хотим получать номер страницы, для пагинации в формате http://site.ru/page?number=1. Такой вид url может быть полезен для seo, чтобы получить канонические url.

Это делается просто:

server.get("/page", (request, response)=>{  
    var numberPage = request.query.number;  
    response.send("<h2>Страница "+parseInt(numberPage)+"</h2>");  
});

В первом аргументе мы указываем только путь. А чтобы получить всё, что идёт после знака вопроса "?" мы обратимся к объекту request.

request.query.number; query указывает, что обращаемся к url, а number - необходимый get-параметр. Пример

Так же я указал, что хотим получить только цифры, через функцию parseInt(). Если получим буквы,то нам выдаст NaN.

Примеры:
z-s-t будет работать

здесь не будет работать

Материал подготовлен автором @zheev

55
16.227 GOLOS
На Golos с August 2017
Комментарии (2)
Сортировать по:
Сначала старые