Documentation ¶
Overview ¶
Package syntax 负责处理路由语法
Index ¶
- func MatchAny(path string) bool
- func MatchDigit(path string) bool
- func MatchWord(path string) bool
- func WithValue(r *http.Request, ps *Params) *http.Request
- type InterceptorFunc
- type Interceptors
- type Param
- type Params
- func (p *Params) Bool(key string) (bool, error)
- func (p *Params) Clone() params.Params
- func (p *Params) Count() (cnt int)
- func (p *Params) Delete(k string)
- func (p *Params) Destroy()
- func (p *Params) Exists(key string) bool
- func (p *Params) Float(key string) (float64, error)
- func (p *Params) Get(key string) (string, bool)
- func (p *Params) Int(key string) (int64, error)
- func (p *Params) Map() map[string]string
- func (p *Params) MustBool(key string, def bool) bool
- func (p *Params) MustFloat(key string, def float64) float64
- func (p *Params) MustInt(key string, def int64) int64
- func (p *Params) MustString(key, def string) string
- func (p *Params) MustUint(key string, def uint64) uint64
- func (p *Params) Set(k, v string)
- func (p *Params) String(key string) (string, error)
- func (p *Params) Uint(key string) (uint64, error)
- type Segment
- type Type
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Interceptors ¶
type Interceptors struct {
// contains filtered or unexported fields
}
func NewInterceptors ¶
func NewInterceptors() *Interceptors
func (*Interceptors) Add ¶
func (i *Interceptors) Add(f InterceptorFunc, name ...string)
func (*Interceptors) NewSegment ¶
func (i *Interceptors) NewSegment(val string) (*Segment, error)
NewSegment 声明新的 Segment 变量
如果为非字符串类型的内容,应该是以 { 符号开头才是合法的。
type Segment ¶
type Segment struct { // 节点实际内容被拆分成以下几个部分,其组成方式如下: // Value = {Name:rule}Suffix // 其中 Name、rule 和 Suffix 可能为空,但是 Name 和 rule 不能同时为空。 Value string // 节点上的原始内容 Name string // 当前节点的参数名称,适用非字符节点。 Suffix string // 保存参数名之后的字符串,比如 "{id}/author" 此值为 "/author",仅对非字符串节点有效果。 // 节点类型 Type Type // 是否为最终结点 // // 在命名和拦截类型的路由项中,如果以 {path} 等结尾,则表示可以匹配任意剩余的字符。 // 此值表示当前节点是否为此种类型。该类型的节点在匹配时,优先级可能会比较低。 Endpoint bool // contains filtered or unexported fields }
Segment 路由项被拆分之后的分段内容
func (*Segment) AmbiguousLen ¶
func (*Segment) IsAmbiguous ¶
IsAmbiguous 判断两个节点是否存在歧义
即除了名称,其它都相同,如果两个节点符合此条件, 在相同路径下是无法判断到底要选哪一条路径的,应该避免此类节节点出现在同一路径上。
func (*Segment) Similarity ¶
Similarity 与 s1 的相似度,-1 表示完全相同, 其它大于等于零的值,越大,表示相似度越高。
type Type ¶
type Type int8
Type 路由项节点的类型
const ( // String 普通的字符串类型,逐字匹配,比如 // /users/1 // 只能匹配 /users/1,不能匹配 /users/2 String Type = iota // Interceptor 拦截器 // // 这是正则和命名参数的特例,其优先级比两都都要高。 Interceptor // Regexp 正则表达式,比如: // /users/{id:\\d+} // 可以匹配 /users/1、/users/2 等任意数值。 Regexp // Named 命名参数,相对于正则,其效率更高,当然也没有正则灵活。比如: // /users/{id} // 可以匹配 /users/1、/users/2 和 /users/username 等非数值类型 Named )
Click to show internal directories.
Click to hide internal directories.