server

package
v0.41.0 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2021 License: MIT Imports: 40 Imported by: 2

Documentation

Overview

Package server web 服务管理

Index

Constants

View Source
const PluginInitFuncName = "InitModule"

PluginInitFuncName 插件中的用于获取模块信息的函数名

NOTE: 必须为可导出的函数名称

Variables

This section is empty.

Functions

This section is empty.

Types

type CTXSanitizer

type CTXSanitizer interface {
	CTXSanitize(*Context) content.Fields
}

CTXSanitizer 提供对数据的验证和修正

但凡对象实现了该接口,那么在 Context.Read 和 Queries.Object 中会在解析数据成功之后,调用该接口进行数据验证。

type Context

type Context struct {
	*content.Context

	// 与当前对话相关的时区
	Location *time.Location

	// 保存 Context 在存续期间的可复用变量
	//
	// 这是比 context.Value 更经济的传递变量方式。
	//
	// 如果需要在多个请求中传递参数,可直接使用 Server.Vars。
	Vars map[interface{}]interface{}
	// contains filtered or unexported fields
}

Context 是对当次 HTTP 请求内容的封装

func NewContext

func NewContext(w http.ResponseWriter, r *http.Request) *Context

NewContext 构建 *Context 实例

func (*Context) ClientIP

func (ctx *Context) ClientIP() string

ClientIP 返回客户端的 IP 地址

NOTE: 包含了端口部分。

获取顺序如下:

  • X-Forwarded-For 的第一个元素
  • Remote-Addr 报头
  • X-Read-IP 报头

func (*Context) Critical

func (ctx *Context) Critical(status int, v ...interface{}) Responser

Critical 输出日志到 CRITICAL 通道并向用户输出指定状态码的页面

func (*Context) Criticalf

func (ctx *Context) Criticalf(status int, format string, v ...interface{}) Responser

Criticalf 输出日志到 CRITICAL 通道并向用户输出指定状态码的页面

func (*Context) Error

func (ctx *Context) Error(status int, v ...interface{}) Responser

Error 输出日志到 ERROR 通道并向用户输出指定状态码的页面

func (*Context) Errorf

func (ctx *Context) Errorf(status int, format string, v ...interface{}) Responser

Errorf 输出日志到 ERROR 通道并向用户输出指定状态码的页面

func (*Context) Now

func (ctx *Context) Now() time.Time

Now 返回当前时间

与 time.Now() 的区别在于 Now() 基于当前时区

func (*Context) ParamID

func (ctx *Context) ParamID(key string, code int) (int64, Responser)

ParamID 获取地址参数中表示 key 的值并并转换成大于 0 的 int64

相对于 Context.ParamInt64(),该值必须大于 0。

NOTE: 若需要获取多个参数,使用 Context.Params 会更方便。

func (*Context) ParamInt64

func (ctx *Context) ParamInt64(key string, code int) (int64, Responser)

ParamInt64 取地址参数中的 key 表示的值 int64 类型值

NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。

func (*Context) ParamString

func (ctx *Context) ParamString(key string, code int) (string, Responser)

ParamString 取地址参数中的 key 表示的 string 类型值

NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。

func (*Context) Params

func (ctx *Context) Params() *Params

Params 声明一个新的 Params 实例

func (*Context) ParseTime

func (ctx *Context) ParseTime(layout, value string) (time.Time, error)

ParseTime 分析基于当前时区的时间

func (*Context) Queries

func (ctx *Context) Queries() (*Queries, error)

Queries 声明一个新的 Queries 实例

func (*Context) QueryObject

func (ctx *Context) QueryObject(v interface{}, code int) Responser

QueryObject 将查询参数解析到一个对象中

func (*Context) Read

func (ctx *Context) Read(v interface{}, code int) (ok bool)

Read 从客户端读取数据并转换成 v 对象

功能与 Unmarshal() 相同,只不过 Read() 在出错时, 会直接调用 Error() 处理:输出 422 的状态码, 并返回一个 false,告知用户转换失败。 如果是数据类型验证失败,则会输出以 code 作为错误代码的错误信息, 并返回 false,作为执行失败的通知。

func (*Context) Result added in v0.40.0

func (ctx *Context) Result(code int, fields content.Fields) Responser

Result 返回 Result 实例

如果找不到 code 对应的错误信息,则会直接 panic。

func (*Context) ServeFile

func (ctx *Context) ServeFile(p, index string, headers map[string]string) Responser

ServeFile 提供文件下载

文件可能提供连续的下载功能,其状态码是未定的, 所以提供了一个类似于 Render 的变体专门用于下载功能。

func (*Context) ServeFileFS

func (ctx *Context) ServeFileFS(f fs.FS, p, index string, headers map[string]string) Responser

ServeFileFS 提供基于 fs.FS 的文件下载服

func (*Context) Server

func (ctx *Context) Server() *Server

Server 获取关联的 Server 实例

type Filter

type Filter func(HandlerFunc) HandlerFunc

Filter 针对 Context 的中间件

Filter 和 github.com/issue9/mux.MiddlewareFunc 本质上没有任何区别, mux.MiddlewareFunc 更加的通用,可以复用市面上的大部分中间件, Filter 则更加灵活一些,适合针对当前框架新的中间件。

如果想要使用 mux.MiddlewareFunc,可以调用 Server.MuxGroups().Middlewares() 方法。

type HandlerFunc

type HandlerFunc func(*Context) Responser

HandlerFunc 路由项处理函数原型

如果返回非空对象,则表示最终向终端输出此内容,不再需要处理其它情况。

func ApplyFilters added in v0.40.0

func ApplyFilters(next HandlerFunc, filter ...Filter) HandlerFunc

ApplyFilters 将过滤器应用于处理函数 next

type Module

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

Module 用于注册初始化模块的相关功能

func (*Module) AddFS added in v0.41.0

func (m *Module) AddFS(fsys ...fs.FS)

AddFS 将多个文件系统与当前模块的文件系统进行关联

当采用 Module.Open 查找文件时,会根据添加的顺序依次查找文件, 只要存在于某一个文件系统中,那么就当作该文件存在,并返回。

每个模块在初始化时,都会默认将 Server.FS + Module.ID 作为模块的文件系统,通过 AddFS 可以挂载其它的文件系统, 与 embed.FS 相结合,可以做到在外部相对应目录中有修改时, 读取外部的文件,如果不存在,则读取 embed.FS 中的内容。

func (*Module) Deps

func (m *Module) Deps() []string

Deps 模块的依赖信息

func (*Module) Description

func (m *Module) Description() string

Description 对模块的详细描述

func (*Module) ID

func (m *Module) ID() string

ID 模块的唯一 ID

func (*Module) Inited added in v0.40.0

func (m *Module) Inited(tag string) bool

Inited 查询指定标签关联的函数是否已经被调用

func (*Module) LoadLocale added in v0.41.0

func (m *Module) LoadLocale(glob string) error

LoadLocale 从 m.FS 加载本地化语言文件

func (*Module) Open added in v0.41.0

func (m *Module) Open(name string) (fs.File, error)

func (*Module) Server added in v0.40.0

func (m *Module) Server() *Server

Server 获取关联的 Server 实例

func (*Module) Tag added in v0.40.0

func (m *Module) Tag(t string) *Tag

Tag 返回指定名称的 Tag 实例

如果不存在则会创建。

func (*Module) Tags

func (m *Module) Tags() []string

Tags 模块的标签名称列表

func (*Module) Version added in v0.40.0

func (m *Module) Version() string

Version 版本号

type Options

type Options struct {
	// 项目默认可存取的文件系统
	//
	// 默认情况下为可执行文件所在的目录。
	FS fs.FS

	// 服务器的时区
	//
	// 默认值为 time.Local
	Location *time.Location

	// 指定生成 Result 数据的方法
	//
	// 默认情况下指向  result.DefaultBuilder。
	ResultBuilder content.BuildResultFunc

	// 缓存系统
	//
	// 默认值为内存类型。
	Cache cache.Cache

	// 端口号
	//
	// 格式参照 net/http.Server.Addr 字段
	Port string

	// 是否禁止自动生成 HEAD 请求
	DisableHead bool

	// 跨域的相关设置
	//
	// 如果为空,采用 mux.DeniedCORS
	CORS *mux.CORS

	// 可以对 http.Server 的内容进行修改
	//
	// NOTE: 对 http.Server.Handler 的修改不会启作用,该值始终会指向 Server.groups
	HTTPServer func(*http.Server)

	// 在请求崩溃之后的处理方式
	//
	// 这是请求的最后一道防线,如果此函数处理依然 panic,则会造成整个项目退出。
	// 如果为空,则会打印简单的错误堆栈信息。
	Recovery recovery.RecoverFunc

	// 此处列出的类型将不会被压缩
	//
	// 可以带 *,比如 text/* 表示所有 mime-type 为 text/ 开始的类型。
	IgnoreCompressTypes []string

	// 日志的输出通道设置
	//
	// 如果此值为空,那么在被初始化 logs.New(nil) 值,表示不会到任务通道,但是各个函数可用。
	Logs *logs.Logs

	// 指定插件的搜索方式
	//
	// 通过 glob 语法搜索插件,比如:
	//  ~/plugins/*.so
	// 具体可参考:https://golang.org/pkg/path/filepath/#Glob
	// 为空表示没有插件。
	//
	// 当前仅支持部分系统,具体可查看:https://golang.org/pkg/plugin/
	Plugins string

	// 指定用于处理本地化的方法
	//
	// 可以为空。
	Locale *serialization.Locale

	// 默认的语言标签
	//
	// 如果为空,则会尝试读取当前系统的本地化信息。
	Tag language.Tag
	// contains filtered or unexported fields
}

Options 初始化 Server 的参数

type Params

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

Params 用于处理路径中包含的参数

p := ctx.Params()
aid := p.Int64("aid")
bid := p.Int64("bid")
if p.HasErrors() {
    // do something
    return
}

func (*Params) Bool

func (p *Params) Bool(key string) bool

Bool 获取参数 key 所代表的值并转换成 bool

最终会调用 strconv.ParseBool 进行转换, 也只有该方法中允许的字符串会被正确转换。

func (*Params) Errors

func (p *Params) Errors() content.Fields

Errors 返回所有的错误信息

func (*Params) Float64

func (p *Params) Float64(key string) float64

Float64 获取参数 key 所代表的值并转换成 float64

func (*Params) HasErrors

func (p *Params) HasErrors() bool

HasErrors 是否有错误内容存在

func (*Params) ID

func (p *Params) ID(key string) int64

ID 获取参数 key 所代表的值并转换成 int64

值必须大于 0,否则会输出错误信息,并返回零值。

func (*Params) Int64

func (p *Params) Int64(key string) int64

Int64 获取参数 key 所代表的值,并转换成 int64

func (*Params) MustBool

func (p *Params) MustBool(key string, def bool) bool

MustBool 获取参数 key 所代表的值并转换成 bool

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。

最终会调用 strconv.ParseBool 进行转换, 也只有该方法中允许的字符串会被正确转换。

func (*Params) MustFloat64

func (p *Params) MustFloat64(key string, def float64) float64

MustFloat64 获取参数 key 所代表的值并转换成 float64

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。

func (*Params) MustID

func (p *Params) MustID(key string, def int64) int64

MustID 获取参数 key 所代表的值并转换成 int64

值必须大于 0,否则会输出错误信息,并返回零值。

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错或是小于零时,才会向 errors 写入错误信息。

func (*Params) MustInt64

func (p *Params) MustInt64(key string, def int64) int64

MustInt64 获取参数 key 所代表的值并转换成 int64

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。

func (*Params) MustString

func (p *Params) MustString(key, def string) string

MustString 获取参数 key 所代表的值并转换成 string

若不存在或是转换出错,则返回 def 作为其默认值。

func (*Params) Result

func (p *Params) Result(code int) Responser

Result 转换成 Result 对象

func (*Params) String

func (p *Params) String(key string) string

String 获取参数 key 所代表的值并转换成 string

type PluginInitFunc added in v0.40.0

type PluginInitFunc func(*Server) error

PluginInitFunc 安装插件的函数签名

type Prefix

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

Prefix 带有统一前缀的路由管理

func (*Prefix) Delete

func (p *Prefix) Delete(path string, h HandlerFunc) *Prefix

Delete 添加 DELETE 请求处理项

func (*Prefix) Get

func (p *Prefix) Get(path string, h HandlerFunc) *Prefix

Get 添加 GET 请求处理项

func (*Prefix) Handle

func (p *Prefix) Handle(path string, h HandlerFunc, method ...string) error

Handle 添加路由项

func (*Prefix) Patch

func (p *Prefix) Patch(path string, h HandlerFunc) *Prefix

Patch 添加 Patch 请求处理

func (*Prefix) Post

func (p *Prefix) Post(path string, h HandlerFunc) *Prefix

Post 添加 POST 请求处理项

func (*Prefix) Put

func (p *Prefix) Put(path string, h HandlerFunc) *Prefix

Put 添加 PUT 请求处理项

func (*Prefix) Remove

func (p *Prefix) Remove(path string, method ...string)

Remove 删除路由项

type Queries

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

Queries 用于处理路径中的查询参数

q,_ := ctx.Queries()
page := q.Int64("page", 1)
size := q.Int64("size", 20)
if q.HasErrors() {
    // do something
    return
}

func (*Queries) Bool

func (q *Queries) Bool(key string, def bool) bool

Bool 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

func (*Queries) Errors

func (q *Queries) Errors() content.Fields

Errors 所有的错误信息

func (*Queries) Float64

func (q *Queries) Float64(key string, def float64) float64

Float64 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

func (*Queries) HasErrors

func (q *Queries) HasErrors() bool

HasErrors 是否存在错误内容

func (*Queries) Int

func (q *Queries) Int(key string, def int) int

Int 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。 若是无法转换,则会保存错误信息

func (*Queries) Int64

func (q *Queries) Int64(key string, def int64) int64

Int64 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

func (*Queries) Object

func (q *Queries) Object(v interface{})

Object 将查询参数解析到一个对象中

具体的文档信息可以参考 https://github.com/issue9/query

func (*Queries) Result

func (q *Queries) Result(code int) Responser

Result 转换成 Responser 对象

func (*Queries) String

func (q *Queries) String(key, def string) string

String 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

type Responser added in v0.40.0

type Responser interface {
	// Status 状态码
	Status() int

	// Headers 输出的报头
	Headers() map[string]string

	// Body 输出到 body 部分的对象
	//
	// 该对象最终经由 content.Marshal 转换成文本输出。
	Body() interface{}
}

Responser 表示向客户端输出的对象

func Created added in v0.40.0

func Created(v interface{}, location string) Responser

Created 201

func Object added in v0.40.0

func Object(status int, body interface{}, headers map[string]string) Responser

func Status added in v0.40.0

func Status(statusCode int) Responser

Status 仅包含状态码的 Responser

type Router

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

Router 路由管理

func (*Router) Delete

func (router *Router) Delete(path string, h HandlerFunc) *Router

Delete 添加 DELETE 请求处理项

func (*Router) Get

func (router *Router) Get(path string, h HandlerFunc) *Router

func (*Router) Handle

func (router *Router) Handle(path string, h HandlerFunc, method ...string) error

func (*Router) MuxRouter added in v0.40.0

func (router *Router) MuxRouter() *group.Router

func (*Router) Patch

func (router *Router) Patch(path string, h HandlerFunc) *Router

Patch 添加 PATCH 请求处理项

func (*Router) Path

func (router *Router) Path(pattern string, params map[string]string) (string, error)

Path 返回相对于域名的绝对路由地址

功能与 mux.Router.URL 相似,但是加上了关联的域名地址的根路径。比如根地址是 https://example.com/blog pattern 为 /posts/{id},则返回为 /blog/posts/1。 如果 params 为空的话,则会直接将 pattern 作为从 mux 转换之后的内容与 router.root 合并返回。

func (*Router) Post

func (router *Router) Post(path string, h HandlerFunc) *Router

Post 添加 POST 请求处理项

func (*Router) Prefix

func (router *Router) Prefix(prefix string, filter ...Filter) *Prefix

Prefix 返回特定前缀的路由设置对象

func (*Router) Put

func (router *Router) Put(path string, h HandlerFunc) *Router

Put 添加 PUT 请求处理项

func (*Router) Remove

func (router *Router) Remove(path string, method ...string)

Remove 删除指定的路由项

func (*Router) SetDebugger added in v0.40.0

func (r *Router) SetDebugger(pprof, vars string) (err error)

SetDebugger 设置调试地址

func (*Router) Static

func (router *Router) Static(p, dir, index string) error

Static 添加静态路由

p 为路由地址,必须以命名参数结尾,比如 /assets/{path},之后可以通过此值删除路由项; dir 为指向静态文件的路径; index 可以在访问一个目录时指定默认访问的页面。

如果要删除该静态路由,则可以将 path 传递给 Remove 进行删除。

比如在 Root 的值为 example.com/blog 时, 将参数指定为 /admin/{path} 和 ~/data/assets/admin 表示将 example.com/blog/admin/* 解析到 ~/data/assets/admin 目录之下。

func (*Router) StaticFS

func (router *Router) StaticFS(p string, f fs.FS, index string) error

func (*Router) URL

func (router *Router) URL(pattern string, params map[string]string) (string, error)

URL 构建完整的 URL

功能与 mux.Router.URL 相似,但是加上了关联的域名地址。比如根地址是 https://example.com/blog pattern 为 /posts/{id},则返回为 https://example.com/blog/posts/1。 如果 params 为空的话,则会直接将 pattern 作为从 mux 转换之后的内容与 router.root 合并返回。

type Server

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

Server 提供了用于构建 Context 对象的基本数据

func GetServer

func GetServer(r *http.Request) *Server

GetServer 从请求中获取 *Server 实例

r 必须得是由 Server 生成的,否则会 panic。

func New

func New(name, version string, o *Options) (*Server, error)

New 返回 *Server 实例

name, version 表示服务的名称和版本号; o 指定了初始化 Server 一些非必要参数。在传递给 New 之后,再对其值进行改变,是无效的。

func (*Server) AddResult added in v0.41.0

func (srv *Server) AddResult(status, code int, key message.Reference, v ...interface{})

AddResult 添加错误代码与关联的描述信息

func (*Server) AttachEvent added in v0.40.0

func (srv *Server) AttachEvent(name string, s Subscriber) int

AttachEvent 订阅指定事件

返回的值可用于取消订阅。

func (*Server) Cache

func (srv *Server) Cache() cache.Cache

Cache 返回缓存的相关接口

func (*Server) Close

func (srv *Server) Close(shutdownTimeout time.Duration) error

Close 关闭服务

func (*Server) Delete added in v0.40.0

func (srv *Server) Delete(key interface{})

Delete 删除指定键名的值

func (*Server) DetachEvent added in v0.40.0

func (srv *Server) DetachEvent(name string, id int)

DetachEvent 取消对某事件的订阅

func (*Server) DisableCompression added in v0.40.0

func (srv *Server) DisableCompression(disable bool)

DisableCompression 是否禁用压缩功能

func (*Server) Eventer added in v0.40.0

func (srv *Server) Eventer(name string) events.Eventer

Eventer 返回指定名称的事件处理对象

name 表示事件名称,该名称必须在 Publisher 中创建。

func (*Server) Files added in v0.41.0

func (srv *Server) Files() *serialization.Files

Files 返回用于序列化文件内容的操作接口

func (*Server) Get

func (srv *Server) Get(key interface{}) (interface{}, bool)

Get 返回指定键名的值

func (*Server) InitModules added in v0.40.0

func (srv *Server) InitModules(tag string) error

InitModules 触发所有模块下指定名称的函数

func (*Server) Locale added in v0.41.0

func (srv *Server) Locale() *serialization.Locale

Locale 返回用于序列化文件内容的操作接口

func (*Server) LocalePrinter added in v0.41.0

func (srv *Server) LocalePrinter() *message.Printer

func (*Server) Location

func (srv *Server) Location() *time.Location

Location 指定服务器的时区信息

func (*Server) Logs

func (srv *Server) Logs() *logs.Logs

Logs 返回关联的 logs.Logs 实例

func (*Server) Mimetypes

func (srv *Server) Mimetypes() *serialization.Mimetypes

Mimetypes 返回用于序列化 web 内容的操作接口

func (*Server) Modules

func (srv *Server) Modules() []*Module

Modules 模块列表

func (*Server) MuxGroups added in v0.40.0

func (srv *Server) MuxGroups() *group.Groups

MuxGroups 返回 group.Groups 实例

func (*Server) Name

func (srv *Server) Name() string

Name 应用的名称

func (*Server) NewContext

func (srv *Server) NewContext(w http.ResponseWriter, r *http.Request) *Context

NewContext 构建 *Context 实例

如果不合规则,会以指定的状码退出。 比如 Accept 的内容与当前配置无法匹配,则退出(panic)并输出 NotAcceptable 状态码。

func (*Server) NewModule added in v0.40.0

func (srv *Server) NewModule(id, version, desc string, deps ...string) (*Module, error)

NewModule 声明一个新的模块

id 模块名称,需要全局唯一; version 模块的版本信息; desc 模块的详细信息; deps 表示当前模块的依赖模块名称,可以是插件中的模块名称。

func (*Server) NewRouter added in v0.40.0

func (srv *Server) NewRouter(name string, root string, matcher group.Matcher, filter ...Filter) (*Router, error)

NewRouter 构建基于 matcher 匹配的路由操作实例

func (*Server) Now

func (srv *Server) Now() time.Time

Now 返回当前时间

与 time.Now() 的区别在于 Now() 基于当前时区

func (*Server) Open

func (srv *Server) Open(name string) (fs.File, error)

Open 实现 fs.FS 接口

func (*Server) ParseTime

func (srv *Server) ParseTime(layout, value string) (time.Time, error)

ParseTime 分析基于当前时区的时间

func (*Server) Publisher added in v0.40.0

func (srv *Server) Publisher(name string) events.Publisher

Publisher 创建事件发布者

func (*Server) RemoveRouter added in v0.40.0

func (srv *Server) RemoveRouter(name string)

func (*Server) Result added in v0.41.0

func (srv *Server) Result(p *message.Printer, code int, fields content.Fields) content.Result

Result 返回指定代码在指定语言的错误描述信息

func (*Server) Results added in v0.41.0

func (srv *Server) Results(p *message.Printer) map[int]string

Results 返回在指定语言下的所有代码以及关联的描述信息

func (*Server) Router

func (srv *Server) Router(name string) *Router

Router 返回由 Server.NewRouter 声明的路由

func (*Server) Serve

func (srv *Server) Serve() (err error)

Serve 启动服务

在运行之前,请确保已经调用 InitModules。

func (*Server) Services

func (srv *Server) Services() *service.Manager

Services 返回服务内容的管理接口

func (*Server) Set

func (srv *Server) Set(key, val interface{})

Set 保存指定键名的值

func (*Server) SetErrorHandle

func (srv *Server) SetErrorHandle(h errorhandler.HandleFunc, status ...int)

SetErrorHandle 设置指定状态码页面的处理函数

如果状态码已经存在处理函数,则修改,否则就添加。

func (*Server) Tag added in v0.41.0

func (srv *Server) Tag() language.Tag

Tag 返回默认的语言标签

func (*Server) Tags

func (srv *Server) Tags() []string

func (*Server) Uptime

func (srv *Server) Uptime() time.Time

Uptime 当前服务的运行时间

func (*Server) Version

func (srv *Server) Version() string

Version 应用的版本

type Subscriber added in v0.40.0

type Subscriber = events.Subscriber

Subscriber 订阅者函数

每个订阅函数都是通过 go 异步执行。

data 为事件传递过来的数据,可能存在多个订阅者, 用户不应该直接修改 data 数据,否则结果是未知的。

type Tag

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

Tag 模块下对执行函数的分类

func (*Tag) AddAt added in v0.40.0

func (t *Tag) AddAt(title string, f scheduled.JobFunc, ti time.Time, delay bool) *Tag

AddAt 添加新的定时任务

f 表示服务的运行函数; title 是对该服务的简要说明; t 指定的时间点; delay 是否在任务执行完之后,才计算下一次的执行时间点。

func (*Tag) AddCron added in v0.40.0

func (t *Tag) AddCron(title string, f scheduled.JobFunc, spec string, delay bool) *Tag

AddCron 添加新的定时任务

f 表示服务的运行函数; title 是对该服务的简要说明; spec cron 表达式,支持秒; delay 是否在任务执行完之后,才计算下一次的执行时间点。

func (*Tag) AddInit

func (t *Tag) AddInit(title string, f func() error) *Tag

AddInit 注册指执行函数

NOTE: 按添加顺序执行各个函数。

func (*Tag) AddJob added in v0.40.0

func (t *Tag) AddJob(title string, f scheduled.JobFunc, scheduler schedulers.Scheduler, delay bool) *Tag

AddJob 添加新的计划任务

f 表示服务的运行函数; title 是对该服务的简要说明; scheduler 计划任务的时间调度算法实现; delay 是否在任务执行完之后,才计算下一次的执行时间点。

func (*Tag) AddRoutes added in v0.40.0

func (t *Tag) AddRoutes(f func(r *Router), routerName string) *Tag

AddRoutes 注册路由项

f 实际执行注册路由的函数; routerName 路由名称,由 Server.NewRouter 中创建,若为空值,则采用 Tag.Name 作为默认值;

func (*Tag) AddService added in v0.40.0

func (t *Tag) AddService(title string, f service.Func) *Tag

AddService 添加新的服务

f 表示服务的运行函数; title 是对该服务的简要说明。

func (*Tag) AddTicker added in v0.40.0

func (t *Tag) AddTicker(title string, f scheduled.JobFunc, dur time.Duration, imm, delay bool) *Tag

AddTicker 添加新的定时任务

f 表示服务的运行函数; title 是对该服务的简要说明; imm 是否立即执行一次该任务; delay 是否在任务执行完之后,才计算下一次的执行时间点。

func (*Tag) Inited added in v0.40.0

func (t *Tag) Inited() bool

Inited 当前标签关联的函数是否已经执行过

func (*Tag) Module added in v0.40.0

func (t *Tag) Module() *Module

Module 返回当前关联的模块

func (*Tag) Name added in v0.40.0

func (t *Tag) Name() string

func (*Tag) Server added in v0.40.0

func (t *Tag) Server() *Server

Server 获取关联的 Server 实例

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳