Если ваш используете connect
(или просто http
модуль), вы можете использовать RegExp
:
С http
:
var http = require('http');
http.createServer(function (req, res) { // Note there's no next here
var match = req.url.match(/^sample\/request\/url\/(.+)$/);
var id = match ? match[1] : null;
}).listen(3000);
...
connect
С:
var connect = require('connect');
connect.createServer(funcion(req, res, next) {
var match = req.url.match(/^sample\/request\/url\/(.+)$/);
var id = match ? match[1] : null;
}).listen(3000);
...
Это простой случай. Если вы хотите иметь свое собственное промежуточное программное обеспечение для маршрутизации, вы должны начать с массива RegExps
(который может генерироваться динамически из добавленного вами String
) и прокручивать их до тех пор, пока вы не найдете совпадение.
Каждый элемент маршрута должен иметь свой RegExp
, а также его параметры, так что, как только вы найдете совпадение, вы можете извлечь и добавить параметры к объекту req
с соответствующим именем, которое вы выберете.
EDIT:
Как robertklep отметил в своем комментарии, вы можете проверить paramify
. Его code очень понятен и делает некоторые из вещей, которые я сказал в последней части ответа. Например, вы можете видеть, что это имеет функцию regify
чтобы динамически contruct в RegExps
и петлю для извлечения параметров матча:
var params = []
for (var i = 1; i < matches.length; i++) {
var key = reg.keys[i - 1]
if (key) {
params[key.name] = matches[i]
} else {
params.push(matches[i])
}
}
Когда речь идет о разборе Params URL, Экспресс делает все тяжелое здесь , Вы должны изучить модуль [Query String] (https://nodejs.org/api/querystring.html), чтобы создать аналогичный механизм. –
Проверьте ['paramify'] (https://github.com/hij1nx/paramify). – robertklep