You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Сейчас параметры обозначаются как :name и в параметр входит любое содержимое до символа / или конца строки.
Можно добавить тип параметра, например так:
root.SetString("/user_:id(\d)") // число от 0 до 9
root.SetString("/user_:id(\d+)") // число от 0 до бесконечности
root.SetString("/user_:name(\d\s)") // число + строка, например 1value
О формате в круглых скобках можно подумать отдельно, вплодь до добавления внешних фильтров, удовлетворяющих интерфейсу:
type FilterFunc func(value []byte) bool
type Filter interface {
Filter(mask []byte) FilteFunc
}
При добавлении ветки в дерево в Param узлах будет сохраняться ссылка на FilterFunc полученная на основе маски в круглых скобках.
Вариант №2
передавать в FilterFunc весь адрес начиная с offset и FilterFunc будет возвращать значение параметра, если в строке удалось его найти согласно маски
Пример:
type FilterFunc(path []byte) (value []byte, err error)
Сейчас параметры обозначаются как
:name
и в параметр входит любое содержимое до символа/
или конца строки.Можно добавить тип параметра, например так:
О формате в круглых скобках можно подумать отдельно, вплодь до добавления внешних фильтров, удовлетворяющих интерфейсу:
При добавлении ветки в дерево в Param узлах будет сохраняться ссылка на FilterFunc полученная на основе маски в круглых скобках.
Вариант №2
FilterFunc
весь адрес начиная сoffset
иFilterFunc
будет возвращать значение параметра, если в строке удалось его найти согласно маскиПример:
123/test
Вариант №3
Node
скомпилированныйregexp
если у параметра была маска в круглых скобках^
иначе результаты совпадений будут сильно отличаться от разумных (возможно опционально)The text was updated successfully, but these errors were encountered: