group

package
v5.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2022 License: MIT Imports: 10 Imported by: 1

Documentation

Overview

Package group 提供了按条件进行分组路由的功能

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Any

func Any(r *http.Request) (*http.Request, bool)

Any 匹配任意内容

Types

type Group

type Group struct {
	// contains filtered or unexported fields
}

Group 一组路由

当路由关联的 Matcher 返回 true 时,就会进入该路由。 如果多条路由的 Matcher 都返回 true,则第一条路由获得权限, 即使该路由最终返回 404,也不会再在其它路由里查找相应的路由。 所以在有多条子路由的情况下,第一条子路由不应该永远返回 true, 否则其它子路由永远无法到达。

func New

func New(o ...mux.Option) *Group

New 声明一个新的 Groups

o 用于设置由 New 添加的路由,有关 NotFound 与 Recovery 的设置同时会作用于 Group。

func (*Group) Add

func (g *Group) Add(matcher Matcher, r *mux.Router)

Add 添加路由

func (*Group) Middlewares

func (g *Group) Middlewares() *mux.Middlewares

Middlewares 返回中间件管理接口

func (*Group) New

func (g *Group) New(name string, matcher Matcher, o ...mux.Option) *mux.Router

New 声明新路由

初始化参数从 g.options 中获取,但是可以通过 o 作修改。

func (*Group) Remove

func (g *Group) Remove(name string)

Remove 删除路由

func (*Group) Router

func (g *Group) Router(name string) *mux.Router

Router 返回指定名称的路由

func (*Group) Routers

func (g *Group) Routers() []*mux.Router

Routers 返回路由列表

func (*Group) Routes added in v5.4.0

func (g *Group) Routes() map[string]map[string][]string

func (*Group) ServeHTTP

func (g *Group) ServeHTTP(w http.ResponseWriter, r *http.Request)

type HeaderVersion

type HeaderVersion struct {
	// 将版本号作为参数保存到上下文中是的名称
	//
	// 如果不需要,可以设置为空值。
	Key string

	// 支持的版本号列表
	//
	// 比如 accept=application/json;version=1.0,version= 之后的内容。
	Versions []string

	// 错误日志输出通道
	//
	// 如果为空,则不输出任何内容。
	ErrLog *log.Logger
}

HeaderVersion 匹配报头的版本号

匹配报头 Accept 中的报头信息。

func (*HeaderVersion) Match

func (v *HeaderVersion) Match(r *http.Request) (*http.Request, bool)

type Hosts

type Hosts struct {
	// contains filtered or unexported fields
}

Hosts 限定域名的匹配工具

func NewHosts

func NewHosts(lock bool, domain ...string) *Hosts

NewHosts 声明新的 Hosts 实例

func (*Hosts) Add

func (hs *Hosts) Add(domain ...string)

Add 添加新的域名

域名的格式和路由的语法格式是一样的,比如:

api.example.com
{sub:[a-z]+}.example.com

如果存在命名参数,也可以通过 syntax.GetParams 获取。 当语法错误时,会触发 panic,可通过 CheckSyntax 检测语法的正确性。

func (*Hosts) Delete

func (hs *Hosts) Delete(domain string)

Delete 删除域名

func (*Hosts) Match

func (hs *Hosts) Match(r *http.Request) (*http.Request, bool)

func (*Hosts) RegisterInterceptor

func (hs *Hosts) RegisterInterceptor(f mux.InterceptorFunc, name ...string)

RegisterInterceptor 注册拦截器

NOTE: 拦截器只有在注册之后添加的域名才有效果。

type Matcher

type Matcher interface {
	// Match 验证请求是否符合当前对象的要求
	//
	// req 为 r 的副本,除非对 r 作了修改,否则可以直接返回 r。
	// ok 表示是否匹配成功。
	Match(r *http.Request) (req *http.Request, ok bool)
}

Matcher 验证一个请求是否符合要求

Matcher 用于路由项的前置判断,用于对路由项进行归类, 符合同一个 Matcher 的路由项,再各自进行路由。比如按域名进行分组路由。

func And

func And(m ...Matcher) Matcher

And 按顺序符合每一个要求

前一个对象返回的实例将作为下一个对象的输入参数。

func AndFunc

func AndFunc(f ...func(*http.Request) (*http.Request, bool)) Matcher

AndFunc 需同时符合每一个要求

func Or

func Or(m ...Matcher) Matcher

Or 仅需符合一个要求

func OrFunc

func OrFunc(f ...func(*http.Request) (*http.Request, bool)) Matcher

OrFunc 仅需符合一个要求

type MatcherFunc

type MatcherFunc func(*http.Request) (*http.Request, bool)

MatcherFunc 用于将 Match(*http.Request) (*http.Request, bool) 转换成 Matcher 接口

func (MatcherFunc) Match

func (f MatcherFunc) Match(r *http.Request) (*http.Request, bool)

Match 实现 Matcher 接口

type PathVersion

type PathVersion struct {
	// contains filtered or unexported fields
}

PathVersion 匹配路径中的版本号

会修改 http.Request.URL.Path 的值,去掉匹配的版本号路径部分,比如:

/v1/path.html

如果匹配 v1 版本,会修改为:

/path.html

func NewPathVersion

func NewPathVersion(param string, version ...string) *PathVersion

NewPathVersion 声明 PathVersion 实例

param 将版本号作为参数保存到上下文中是的名称,如果不需要,可以设置为空值。

func (*PathVersion) Match

func (v *PathVersion) Match(r *http.Request) (*http.Request, bool)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL