Я пытаюсь создать NodeJS Express API (маршрут), который имеет следующие характеристики:
У него есть базовый путь, в моем случае это /web/views
.Эта часть является статическим значением и не изменяется до тех пор, пока сервер работает.
Я могу сделать это следующим образом:
const BASE = '/web/views'; // defined externally/elsewhere
app.get(BASE, function handleRequest(req, res) {
// handle API request...
}
Далее я ожидаю получитьресурс.Учитывая имя этого ресурса, я нахожу файл и отправляю его клиенту.
Я могу сделать это следующим образом:
app.get(BASE + '/:resource', function handleRequest(req, res) {
var resource = req.params.resource;
// handle API request...
}
Итак, на клиенте я вызываю его таким образом:
GET /web/views/header
Пока все это работает ... но моя проблема в том, что моим "ресурсом" может быть сам по себе путь, такой как:
GET /web/views/menu/dashboard
илиболее длинный путь, например:
GET /web/views/some/long/path/to/my/xyz
Я использовал следующее отображение REGEX:
const DEFAULT_REGEX = '/(\*/)?:resource';
или, точнее:
app.get(BASE + DEFAULT_REGEX, function handleRequest(req, res) {
var resource = req.params.resource;
// handle API request...
}
Это работает с произвольнымдлина пути между значением BASE
и идентификатором :resource
, но проблема в том, что моя переменная resource
имеет только часть пути xyz
, а не полный путь (т. е. /some/long/path/to/my/xyz
).
Я мог бы просто обмануть и убрать ведущий BASE
из req.url
, но я думал, что для него будет правило REGEX.
Если кто-нибудь знает, как сделать такую расширенную маршрутизацию REGEX,Буду признателен.
Спасибо!