group

package
v7.0.0-beta.1 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2022 License: MIT Imports: 11 Imported by: 2

Documentation

Overview

Package group 提供了针对一组路由的操作

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type GroupOf

type GroupOf[T any] struct {
	// contains filtered or unexported fields
}

GroupOf 一组路由的集合

func NewGroupOf

func NewGroupOf[T any](call mux.CallOf[T], notFound T, methodNotAllowedBuilder, optionsBuilder types.BuildNodeHandleOf[T], o ...mux.Option) *GroupOf[T]

NewGroupOf 声明 GroupOf 对象

初始化参数与 mux.NewRouterOf 相同,这些参数最终也会被 GroupOf.New 传递给新对象。

func (*GroupOf[T]) Add

func (g *GroupOf[T]) Add(matcher Matcher, r *mux.RouterOf[T])

Add 添加路由

matcher 用于判断进入 r 的条件,如果为空,则表示不作判断。 如果有多个 matcher 都符合条件,第一个符合条件的 r 获得优胜;

func (*GroupOf[T]) New

func (g *GroupOf[T]) New(name string, matcher Matcher, o ...mux.Option) *mux.RouterOf[T]

New 声明新路由

新路由会继承 NewGroupOf 中指定的参数,其中的 o 可以覆盖由 NewGroupOf 中的相关参数;

func (*GroupOf[T]) Remove

func (g *GroupOf[T]) Remove(name string)

func (*GroupOf[T]) Router

func (g *GroupOf[T]) Router(name string) *mux.RouterOf[T]

Router 返回指定名称的路由

func (*GroupOf[T]) Routers

func (g *GroupOf[T]) Routers() []*mux.RouterOf[T]

Routers 返回路由列表

func (*GroupOf[T]) Routes

func (g *GroupOf[T]) Routes() map[string]map[string][]string

func (*GroupOf[T]) ServeHTTP

func (g *GroupOf[T]) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*GroupOf[T]) Use

func (g *GroupOf[T]) Use(m ...types.MiddlewareOf[T])

Use 为所有已经注册的路由添加中间件

type HeaderVersion

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

HeaderVersion 匹配报头的版本号

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

func NewHeaderVersion

func NewHeaderVersion(param, key string, errlog *log.Logger, version ...string) *HeaderVersion

NewHeaderVersion 声明 HeaderVersion 实例

param 将版本号作为参数保存到上下文中时的名称,如果不需要保存参数,可以设置为空值; errlog 错误日志输出通道,如果为空则采用 log.Default(); key 表示在 accept 报头中的表示版本号的参数名,如果为空则采用 version; version 版本的值,可能为空,表示匹配任意值;

func (*HeaderVersion) Match

func (v *HeaderVersion) Match(r *http.Request, ctx *types.Context) (ok 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

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

func (*Hosts) Delete

func (hs *Hosts) Delete(domain string)

func (*Hosts) Match

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

func (*Hosts) RegisterInterceptor

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

RegisterInterceptor 注册拦截器

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

type Matcher

type Matcher interface {
	// Match 验证请求是否符合当前对象的要求
	//
	// 返回值表示是否匹配成功;
	//
	// 如果 Match 返回 false,那么不应当对 *http.Request 和 *types.Context
	// 所指向的内容作修改,否则可能影响后续的判断。
	Match(*http.Request, *types.Context) bool
}

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

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

func AndMatcher

func AndMatcher(m ...Matcher) Matcher

AndMatcher 按顺序符合每一个要求

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

func AndMatcherFunc

func AndMatcherFunc(f ...func(*http.Request, *types.Context) bool) Matcher

AndMatcherFunc 需同时符合每一个要求

func OrMatcher

func OrMatcher(m ...Matcher) Matcher

OrMatcher 仅需符合一个要求

func OrMatcherFunc

func OrMatcherFunc(f ...func(*http.Request, *types.Context) bool) Matcher

OrMatcherFunc 仅需符合一个要求

type MatcherFunc

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

func (MatcherFunc) Match

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

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 将版本号作为参数保存到上下文中是的名称,如果不需要保存参数,可以设置为空值; version 版本的值,可以为空,表示匹配任意值;

func (*PathVersion) Match

func (v *PathVersion) Match(r *http.Request, ctx *types.Context) (ok bool)

Jump to

Keyboard shortcuts

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