Как можно заменить attributes в path, используя (или нет) regex?
Объясню точнее:
Есть большой список uri в таблице (в качестве паттернов для определения некоторых правил).
Например, "...localhost:8080/students/{studentId}/grades/{maths}"
Я ловлю через фильтр запросы, вытаскиваю uri, могу получить все эти аттрибуты по их именам.
Теперь мне надо взять строку (этот uri) и заменить в нем эти аттрибуты (значения) на их имена: то есть 1234 на "{studentId}", чтобы сравнить с паттернами из таблицы.
В чем сложность: я не могу искать просто substring, т.к. такое сочетание символов может найтись не только среди атрибутов, но и в самих эндпоинтах uri - тогда заменю не то, что надо (типа students/{students}). Или это сочетание может быть внутри другого (ограничить условие поиска наличием слэшей нельзя, т.к. аттрибут может быть в конце uri.
Как можно сделать замену аттрибутов на их имена в строке, учитывая все эти варианты? Есть такие regex'ы?
Буду сильно благодарна за помощь
Или например, проверять местонахождение атрибута и если он в конце, то игнорировать наличие slash в конце, а во всех остальных случаях ограничивать слешем.
Точный ответ можете дать вы, ибо точная структура всех возможных урлов и паттернов имеющихся в наличии известна вам
Да, спасибо, но если атрибут не в конце, и я ограничиваю его слешем, то вариант /account/tratata/{account}/tratata заменит мне первое вхождение account.
Там просто куча api будет в таблице, нереально писать под каждый отдельный реджекс.
Думала, может, как-то универсально можно
А можно ли, например, получая request, скопировать его, сделать ему setAtribute () для каждого атрибута и уже после этого вытаскивать из этой измененной копии uri (то есть уже готовый для сравнения стринг). Что скажете?
если атрибут не в конце, и я ограничиваю его слешем, то вариант /account/tratata/{account}/tratata заменит мне первое вхождение account.
Мне кажется, что тут важна специфика урлов. Т.е. насколько точно они совпадают? Ведь, можно например, разделить строку по слешу, затем получить первый по индексу элемент массива account. Затем заменить его и пересобрать массив обратно в строку.
А можно ли, например, получая request, скопировать его, сделать ему setAtribute () для каждого атрибута и уже после этого вытаскивать из этой измененной копии uri (то есть уже готовый для сравнения стринг). Что скажете?
Можно сделать. Опять-таки мы упираемся в специфику строения урлов. Насколько они совпадают по структуре и т.д. Ведь, если структура вышеупомянутой формы, то по найти второе вхождение элемента account, затем по нему разделить строку. Добавить свое значение и собрать рпи помощи StringBuilder