server

package
v0.45.0 Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2022 License: MIT Imports: 44 Imported by: 2

Documentation

Overview

Package server web 服务管理

Index

Constants

View Source
const (
	ServiceStopped = scheduled.Stopped // 当前处于停止状态,默认状态
	ServiceRunning = scheduled.Running // 正在运行
	ServiceFailed  = scheduled.Failed  // 出错,不再执行后续操作
)

几种可能的状态值

View Source
const DefaultCharset = "utf-8"

DefaultCharset 默认的字符集

View Source
const DefaultMimetype = "application/octet-stream"

DefaultMimetype 默认的媒体类型

在不能获取输入和输出的媒体类型时,会采用此值作为其默认值。

Variables

This section is empty.

Functions

This section is empty.

Types

type BuildResultFunc added in v0.44.0

type BuildResultFunc func(status int, code, message string) Result

BuildResultFunc 用于生成 Result 接口对象的函数

用户可以通过 BuildResultFunc 返回自定义的 Result 对象, 在 Result 中用户可以自定义其展示方式,可参考默认的实现 DefaultResultBuilder

type CTXSanitizer

type CTXSanitizer interface {
	// CTXSanitize 验证和修正当前对象的数据
	//
	// 返回的是字段名以及对应的错误信息,一个字段可以对应多个错误信息。
	CTXSanitize(*Context) ResultFields
}

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

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

可用于 HTTP 请求中对用户提交数据的验证。

type Context

type Context struct {
	Response http.ResponseWriter
	Request  *http.Request

	// 指定输出时所使用的媒体类型,以及名称
	OutputMimetype     serialization.MarshalFunc
	OutputMimetypeName string

	// 输出到客户端的字符集
	//
	// 若值为 encoding.Nop 或是空,表示为 utf-8
	OutputCharset     encoding.Encoding
	OutputCharsetName string

	// 客户端内容所使用的媒体类型
	InputMimetype serialization.UnmarshalFunc

	// 客户端内容所使用的字符集
	//
	// 若值为 encoding.Nop 或是空,表示为 utf-8
	InputCharset encoding.Encoding

	// 输出语言的相关设置项
	OutputTag     language.Tag
	LocalePrinter *message.Printer

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

	// 保存 Context 在存续期间的可复用变量
	//
	// 这是比 context.Value 更经济的传递变量方式,
	// 相较于 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) Body

func (ctx *Context) Body() (body []byte, err error)

Body 获取用户提交的内容

相对于 ctx.Request.Body,此函数可多次读取。不存在 body 时,返回 nil

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 通道并向用户输出指定状态码的页面

NOTE:应该在出错的地方直接调用 Error,而不是将 Error 嵌套在另外的函数里, 否则出错信息的位置信息将不准确。

func (*Context) Errorf

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

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

func (*Context) IsXHR added in v0.44.0

func (ctx *Context) IsXHR() bool

func (*Context) Log added in v0.44.0

func (ctx *Context) Log(level, deep int, v ...interface{})

Log 输出日志并以指定的状态码退出

deep 为 0 表示 Log 本身;

func (*Context) Logf added in v0.44.0

func (ctx *Context) Logf(level, deep int, format string, v ...interface{})

Logf 输出日志并以指定的状态码退出

deep 为 0 表示 Logf 本身;

func (*Context) Logs added in v0.44.0

func (ctx *Context) Logs() *logs.Logs

func (*Context) Marshal

func (ctx *Context) Marshal(status int, v interface{}, headers map[string]string) error

Marshal 将 v 解码并发送给客户端

status 表示输出的状态码,如果出错,可能输出的不是该状态码; v 输出的对象,若是一个 nil 值,则不会向客户端输出任何内容; 若是需要正常输出一个 nil 类型到客户端(比如JSON 中的 null), 可以传递一个 *struct{} 值,或是自定义实现相应的解码函数; headers 报头信息,如果已经存在于 ctx.Response 将覆盖 ctx.Response 中的值, 如果需要指定一个特定的 Content-Type 和 Content-Language, 可以在 headers 中指定,否则使用当前的编码和语言名称;

func (*Context) Now

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

Now 返回当前时间

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

func (*Context) ParamID

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

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

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

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

func (*Context) ParamInt64

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

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

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

func (*Context) ParamString

func (ctx *Context) ParamString(key, code string) (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 string) Responser

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

func (*Context) Read

func (ctx *Context) Read(v interface{}, code string) Responser

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

功能与 Unmarshal() 相同,只不过 Read() 在出错时,返回的不是 error, 而是一个表示错误信息的 Responser 对象。

如果 v 实现了 CTXSanitizer 接口,则在读取数据之后,会调用其接口函数。 如果验证失败,会输出以 code 作为错误代码的 Responser 对象。

func (*Context) Redirect added in v0.44.0

func (ctx *Context) Redirect(status int, url string) Responser

Redirect 重定向至新的 URL

func (*Context) Result added in v0.40.0

func (ctx *Context) Result(code string, fields ResultFields) Responser

Result 返回 Result 实例

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

func (*Context) Server

func (ctx *Context) Server() *Server

Server 获取关联的 Server 实例

func (*Context) Sprintf

func (ctx *Context) Sprintf(key message.Reference, v ...interface{}) string

Sprintf 返回翻译后的结果

func (*Context) Unmarshal

func (ctx *Context) Unmarshal(v interface{}) error

Unmarshal 将提交的内容转换成 v 对象

type Filter

type Filter func(HandlerFunc) HandlerFunc

Filter 适用于 Context 的中间件

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

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

func AcceptFilter added in v0.45.0

func AcceptFilter(ct ...string) Filter

AcceptFilter 提供限定 accept 的中间件

type HandlerFunc

type HandlerFunc func(*Context) Responser

HandlerFunc 路由项处理函数原型

如果返回 nil,表示未出现任何错误,可以继续后续操作, 非 nil,表示需要中断执行并向用户输出返回的对象。

func Accept added in v0.45.0

func Accept(next HandlerFunc, ct ...string) HandlerFunc

Accept 提供限定 accept 的中间件

type Options

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

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

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

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

	// 端口号
	//
	// 格式参照 net/http.Server.Addr 字段。
	// 可以为空,表示由 net/http.Server 确定其默认值。
	//
	// NOTE: 该值可能会被 HTTPServer 的操作所覆盖。
	Port string

	// 初始化路由的参数
	//
	// 这些选项会应用在所有的路由上,但是并不是所有选项都起作用,
	// 比如 mux.URLDomain,该值始终是在 NewRouter 中指定。
	// 可以为空。
	RouterOptions []mux.Option

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

	// 日志的输出通道设置
	//
	// 如果此值为空,那么在被初始化 logs.New(nil) 值,表示不会输出到任何通道。
	Logs *logs.Logs

	// 指定用于序列化文件的方法
	//
	// 该对象同时被用于加载配置文件和序列化文件。 如果为空,会初始化一个空对象。
	Files *serialization.Files

	// 默认的语言标签
	//
	// 在用户请求的报头中没有匹配的语言标签时,会采用此值作为该用户的本地化语言,
	// 同时也用来初始化 Server.LocalePrinter。
	//
	// 如果为空,则会尝试读取当前系统的本地化信息。
	Tag language.Tag

	// 本地化操作的对象
	//
	// 与 Files 组合构建 serialization.Locale 对象,可以为空。
	Catalog *catalog.Builder
	// 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() ResultFields

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 string) Responser

Result 转换成 Result 对象

func (*Params) String

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

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

type Prefix

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

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

func (*Prefix) Delete

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

func (*Prefix) Get

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

func (*Prefix) Handle

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

func (*Prefix) Patch

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

func (*Prefix) Post

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

func (*Prefix) Put

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

func (*Prefix) Remove

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

func (*Prefix) URL added in v0.44.0

func (p *Prefix) URL(strict bool, path string, params map[string]string) (string, error)

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() ResultFields

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

如果 v 实现了 CTXSanitizer 接口,则在读取数据之后,会调用其接口函数。 如果验证失败,错误信息存入 q.errors。

func (*Queries) Result

func (q *Queries) Result(code string) 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 部分的对象
	//
	// 该对象最终经由 serialization.MarshalFunc 转换成文本输出。
	Body() interface{}
}

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

func Exit added in v0.44.0

func Exit() Responser

Exit 不再执行后续操作退出当前请求

与其它返回的区别在于,Exit 表示已经向客户端输出相关内容,仅作退出。

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 Result

type Result interface {
	// Add 添加详细的错误信息
	//
	// 相同的 key 应该能关联多个 val 值。
	Add(key string, val ...string)

	// Set 设置详细的错误信息
	//
	// 如果已经相同的 key,会被覆盖。
	Set(key string, val ...string)

	// HasFields 是否存在详细的错误信息
	//
	// 如果有通过 Add 添加内容,那么应该返回 true
	HasFields() bool

	// Status HTTP 状态码
	//
	// 最终会经此值作为 HTTP 状态会返回给用户
	Status() int
}

Result 展示错误代码需要实现的接口

func DefaultResultBuilder added in v0.44.0

func DefaultResultBuilder(status int, code, message string) Result

DefaultResultBuilder 默认的 BuildResultFunc 实现

支持以下格式的返回信息:

JSON:

{
    'message': 'error message',
    'code': '4000001',
    'fields':[
        {'name': 'username': 'message': ['名称过短', '不能包含特殊符号']},
        {'name': 'password': 'message': ['不能为空']},
    ]
}

XML:

<result code="400">
    <message>error message</message>
    <field name="username">
        <message>名称过短</message>
        <message>不能包含特殊符号</message>
    </field>
    <field name="password"><message>不能为空</message></field>
</result>

YAML:

message: 'error message'
code: '40000001'
fields:
  - name: username
    message:
      - 名称过短
      - 不能包含特殊符号
  - name: password
    message:
      - 不能为空

protobuf:

message Result {
    string message = 1;
    string code = 2;
    repeated Field fields = 3;
}

message Field {
    string name = 1;
    repeated string message = 2;
}

FormData:

message=errormessage&code=4000001&fields.username=名称过短&fields.username=不能包含特殊符号&fields.password=不能为空

protobuf

message Result {
    string message = 1;
    string code = 2;
    repeated Field fields = 3;
}

message Field {
    string name = 1;
    repeated string message = 2;
}

type ResultFields added in v0.44.0

type ResultFields = validation.Messages

ResultFields 表示字段的错误信息列表

原始类型为 map[string][]string

type Router

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

Router 路由

func (*Router) Delete

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

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) *Router

func (*Router) MuxRouter added in v0.40.0

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

func (*Router) Patch

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

func (*Router) Post

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

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

func (*Router) Remove

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

func (*Router) URL

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

URL 构建完整的 URL

type ScheduledJob added in v0.44.0

type ScheduledJob = scheduled.Job

type ScheduledJobFunc added in v0.44.0

type ScheduledJobFunc = scheduled.JobFunc

type Scheduler added in v0.44.0

type Scheduler = scheduled.Scheduler

type Server

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

Server 提供 HTTP 服务

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) AddAt added in v0.44.0

func (srv *Server) AddAt(title string, f ScheduledJobFunc, ti time.Time, delay bool)

AddAt 添加新的定时任务

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

func (*Server) AddCron added in v0.44.0

func (srv *Server) AddCron(title string, f ScheduledJobFunc, spec string, delay bool)

AddCron 添加新的定时任务

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

func (*Server) AddJob added in v0.44.0

func (srv *Server) AddJob(title string, f ScheduledJobFunc, scheduler Scheduler, delay bool)

AddJob 添加新的计划任务

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

func (*Server) AddResult added in v0.41.0

func (srv *Server) AddResult(status int, code string, phrase localeutil.LocaleStringer)

AddResult 添加一条错误信息

status 指定了该错误代码反馈给客户端的 HTTP 状态码;

func (*Server) AddResults added in v0.42.0

func (srv *Server) AddResults(status int, messages map[string]localeutil.LocaleStringer)

AddResults 添加多条错误信息

func (*Server) AddService added in v0.44.0

func (srv *Server) AddService(title string, f ServiceFunc)

AddService 添加新的服务

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

NOTE: 如果 Manager 的所有服务已经处于运行的状态,则会自动运行新添加的服务。

func (*Server) AddTicker added in v0.44.0

func (srv *Server) AddTicker(title string, f ScheduledJobFunc, dur time.Duration, imm, delay bool)

AddTicker 添加新的定时任务

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

func (*Server) Cache

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

Cache 返回缓存的相关接口

func (*Server) Close

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

Close 关闭服务

func (*Server) FileServer added in v0.44.0

func (srv *Server) FileServer(fsys fs.FS, name, index string) HandlerFunc

FileServer 提供静态文件服务

fsys 为文件系统,如果为空则采用 srv.FS; name 表示参数名称; index 表示 目录下的默认文件名;

func (*Server) Files added in v0.41.0

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

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

func (*Server) Jobs added in v0.44.0

func (srv *Server) Jobs() []*ScheduledJob

Jobs 返回所有的计划任务

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) Middlewares added in v0.44.0

func (srv *Server) Middlewares() *middleware.Middlewares

func (*Server) Mimetypes

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

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

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) NewFS added in v0.44.0

func (srv *Server) NewFS(path string, fsys ...fs.FS) (fs.FS, error)

NewFS 创建一个基于当前文件系统的子文件系统

fsys 可以指定另外同等级的文件系统,多个文件系统可以共存, 当前查找文件时,会依次查找各个文件系统,直到找到文件或是不存在于任何文件系统。

func (*Server) NewRouter added in v0.40.0

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

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

domain 仅用于 URL 生成地址,并不会对路由本身产生影响,可以为空。

func (*Server) Now

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

Now 返回当前时间

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

func (*Server) OnClose added in v0.44.0

func (srv *Server) OnClose(f func() error)

OnClose 注册关闭服务时需要执行的函数

NOTE: 按注册的相反顺序执行。

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) 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 string, fields ResultFields) Result

Result 返回 Result 实例

如果找不到 code 对应的错误信息,则会直接 panic。 fields 表示明细字段,可以为空,之后通过 Result.Add 添加。

func (*Server) Results added in v0.41.0

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

Results 返回错误代码以及对应的说明内容

func (*Server) Router

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

func (*Server) Routers added in v0.44.0

func (srv *Server) Routers() []*Router

func (*Server) Routes added in v0.44.0

func (srv *Server) Routes() map[string]map[string][]string

Routes 返回所有路由的注册路由项

第一个键名表示路由名称,第二键值表示路由项地址,值表示该路由项支持的请求方法;

func (*Server) Serve

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

Serve 启动服务

serve 如果为空,表示不启动 HTTP 服务,仅执行向 action 注册的函数。

func (*Server) Services

func (srv *Server) Services() []*Service

Services 返回长期运行的服务函数列表

func (*Server) Serving added in v0.44.0

func (srv *Server) Serving() bool

Serving 是否处于服务状态

func (*Server) Tag added in v0.41.0

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

Tag 返回默认的语言标签

func (*Server) Uptime

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

Uptime 当前服务的运行时间

func (*Server) Vars added in v0.42.0

func (srv *Server) Vars() *sync.Map

Vars 操纵共享变量的接口

func (*Server) Version

func (srv *Server) Version() string

Version 应用的版本

type Service added in v0.44.0

type Service struct {
	Title string
	// contains filtered or unexported fields
}

Service 服务模型

func (*Service) Err added in v0.44.0

func (srv *Service) Err() error

Err 上次的错误信息,不会清空。

func (*Service) Run added in v0.44.0

func (srv *Service) Run()

Run 开始执行该服务

func (*Service) State added in v0.44.0

func (srv *Service) State() ServiceState

State 获取当前服务的状态

func (*Service) Stop added in v0.44.0

func (srv *Service) Stop()

Stop 停止服务

type ServiceFunc added in v0.45.0

type ServiceFunc func(ctx context.Context) error

ServiceFunc 服务实际需要执行的函数

实现者需要正确处理 ctx.Done 事件,调用者可能会主动取消函数执行; 如果是通 ctx.Done 取消的,应该返回 context.Canceled。

type ServiceState added in v0.44.0

type ServiceState = scheduled.State

ServiceState 服务的状态值

Jump to

Keyboard shortcuts

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