Я хочу настроить несколько более сложных маршрутов, которые могут включать в себя ряд необязательных параметров. Предпочтительно, я хотел бы использовать именованные параметры для удобства доступа. Вот пример того, чего я пытаюсь достичь:
// The following routes should be matched based on parameters provided:
// GET /books/:category/:author
// GET /books/:category/:author/limit/:limit
// GET /books/:category/:author/skip/:skip
// GET /books/:category/:author/limit/:limit/skip/:skip
// GET /books/:category/:author/sort/:sortby
// GET /books/:category/:author/sort/:sortby/limit/:limit
// GET /books/:category/:author/sort/:sortby/skip/:skip
// GET /books/:category/:author/sort/:sortby/limit/:limit/skip/:skip
app.get('/books/:category/:author/(sort/:sortby)?/(limit/:limit)?/(skip/:skip)?', myController.index);
Как вы можете видеть, я пытаюсь сгруппировать необязательные параметры с помощью (paramKey/paramValue)?
. Таким образом, я надеялся, что смогу "смешивать и сопоставлять" необязательные параметры, все еще используя имена параметров. К сожалению, это не работает.
Есть ли способ получить эту работу без необходимости писать прямые регулярные выражения и добавлять дополнительную логику для анализа любых результирующих групп параметров на основе индексов?
В принципе, я ищу простой способ проанализировать пары ключ/значение с маршрута.