web

package module
v0.33.0 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2020 License: MIT Imports: 32 Imported by: 75

README

web Test Go version Go Report Card license codecov PkgGoDev

web 是一个比较完整的 API 开发框架,相对于简单的路由,提供了更多的便利功能。

如果你只是需要一个简单的路由工具,那么你可以移步到 mux

package main

import "github.com/issue9/web"

// main.go
func main() {
    w, _ := web.Classic("./appconfig")

    // 注册模块信息
    m1.Init()
    m2.Init()

    w.Serve()
}

// modules/m1/module.go
func Init(s *web.Web) {
    s.NewModule("m1", "模块描述信息").
        Get("/admins", getAdmins).
        Get("/groups", getGroups)
}

// modules/m2/module.go
func Init(s *web.Web) {
    s.NewModule("m2", "模块描述信息", "m1").
        Get("/admins", getAdmins).
        Get("/groups", getGroups)
}

项目结构

这只是推荐的目录结构,但不是必须按照此来。

+----- common 一些公用的包
|
+----- modules 各个模块的代码
|        |
|        +----- module1
|        |
|        +----- module2
|
+----- cmd
|        |
|        +----- main.go
|        |
|        |----- appconfig 配置文存放路径
|                  |
|                  +----- web.yaml 框架本身的配置文件
|                  |
|                  +----- logs.xml 日志配置文件
|

模块

项目主要代码都在 modules 下的各个模块里,每一个模块需要包含一个初始化函数, 用于向框架注册当前模块的一些主要信息。通过 web.MODServer 注册模块:

package m1

import "github.com/issue9/web"

func Init(s *web.Web) {
    m := s.NewModule("test", "测试模块")

    m.AddInit(func() error {
        // TODO 此处可以添加初始化模块的相关代码
        return nil
    }, "初始化函数描述")

    m.AddService(func(ctx context.Context) error {
        // TODO 此处添加服务代码
    }, "服务描述")
}

配置文件

通过 web.Classic() 函数,可以在初始化时指定配置文件,文件格式可以是 XML、JSON 和 YAML。用户也可以自行添加新的格式支持。

web.yaml

以下是该文件的所有配置项:

名称 类型 描述
debug.vars string 不为空表示指定 expvar 的展示地址
debug.pprof string 不为空表示指定 net/http/pprof 的相关调试地址前缀
root string 项目的根路径,比如 /blog
plugins string 指定需要加载的插件,可以使用 glob 模式,仅支持部分系统,具体可见 https://golang.org/pkg/plugin/
headers object 输出的报头,键名为报头名称,键值为对应的值
static object 静态内容,键名为 URL 地址,键值为对应的文件夹
disableOptions bool 是否禁用 OPTIONS 请求方法
disableHead bool 是否禁用自动生成 HEAD 请求方法
allowedDomains array 限定访问域名,可以是多个,若不指定,表示不限定
readTimeout string 与 http.Server.ReadTimeout 相同
writeTimeout string 与 http.Server.WriteTimeout 相同
idleTimeout string 与 http.Server.IdleTimeout 相同
maxHeaderBytes int 与 http.Server.MaxHeaderBytes 相同
readHeaderTimeout string 与 http.Server.ReadHeaderTimeout 相同
shutdownTimeout string 当请求关闭时,可用于处理剩余请求的时间。
timezone string 时区信息,名称为 IAAN 注册的名称,为空则为 Local
certificates object 多域名的证书信息

详细的介绍可以参考 ./config.go 文件中的描述。

在 debug 模式下,会添加两个调试用的地址:/debug/pprof//debug/vars

logs.xml

logs.xml 采用 logs 包的功能,具体的配置可参考其文档。

字符集

字符集用户无须任何操作,会自动根据 Content-Type 中的 charset 属性自动解析其字符集, 输出时,也会根据 Accept-Charset 报头内容,作自动转换之后再输出。以下字符集都被支持: https://www.iana.org/assignments/character-sets/character-sets.xhtml

媒体类型

默认情况下,框架不会处理任何的 mimetype 类型的数据。需要用户通过 Config.MarhsalersConfig.Unmarshalers 添加相关的处理函数。 添加方式如下:

conf := &web.Config {
    Marshalers: map[string]mimetype.MarhsalFunc{
        "application/json": json.Marshal,
    },
    Unmarshalers: map[string]mimetype.UnmarhsalFunc{
        "application/json": json.Unmarshal,
    },
    // 其它设置项
}

srv := web.New(conf)
srv.Serve()
错误处理

框架提供了一种输出错误信息内容的机制,用户只需要实现 Result 接口,即可自定义输出的错误信息格式。 具体实现可参考 context.defaultResult 的实现。

安装

go get github.com/issue9/web

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package web 一个微型的 RESTful API 框架

配置文件

配置文件的映射对象在 config.go 文件,其中有各个字段的详细说明。 用户如果需要添加一些自定义的配置项,需要自行再添加其它名称的配置文件, 并通过 config.LoadFile 加载相应的配置文件。

框架了除了本身的 web.yaml 配置文件之外,还有 logs.xml,用于定制日志的相关内容。 具体的日志相关信息,可以访问 https://github.com/issue9/logs 模块。

字符集

字符集用户无须任何操作,会自动根据 `Content-Type` 中的 charset 属性自动解析其字符集, 输出时,也会根据 `Accept-Charset` 报头内容,作自动转换之后再输出。 以下字符集都被支持: https://www.iana.org/assignments/character-sets/character-sets.xhtml

媒体类型

默认情况下,框架不会处理任何的 mimetype 类型的数据。需要用户通过 Config 对象中的 Marshalers 和 Unmarshalers 字段指定相应的解码和编码函数, context/mimetype/ 之下也包含部分已经实现的编解码函数。

返回结果

context 包下的 Result 表示在出错时的输出内容。在使用前,用户需要在 Config.Results 添加各类错误代码。

模块

用户可以把功能相对独立的内容当作一个模块进行封装。框架本身提供了 web.MODServer 对模块进行了依赖管理。用户可以在 Web.NewModule() 返回对象中, 对模块进行初始化和路由项的添加。所有模块会在 Web.Init() 中进行初始化。

Index

Constants

View Source
const (
	LogsFilename   = "logs.xml"
	ConfigFilename = "web.yaml"
)

两个配置文件的名称

View Source
const ContextKeyWeb contextKey = 0

ContextKeyWeb 可以从 http.Request 中获取 Web 实例的关键字

View Source
const Version = version.Version

Version 当前框架的版本

Variables

View Source
var ErrInited = errors.New("模块已经初始化")

ErrInited 当模块被多次初始化时返回此错误

Functions

This section is empty.

Types

type Certificate added in v0.32.0

type Certificate struct {
	Cert string `yaml:"cert,omitempty" json:"cert,omitempty" xml:"cert,omitempty"`
	Key  string `yaml:"key,omitempty" json:"key,omitempty" xml:"key,omitempty"`
}

Certificate 证书管理

type Config added in v0.32.0

type Config struct {
	XMLName struct{} `yaml:"-" json:"-" xml:"web"`

	// 调试信息的设置
	Debug *Debug `yaml:"debug,omitempty" json:"debug,omitempty" xml:"debug,omitempty"`

	// 网站的根目录所在
	//
	// 比如 https://example.com/api/
	Root string `yaml:"root,omitempty" json:"root,omitempty" xml:"root,omitempty"`

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

	// 网站的域名证书
	//
	// 该设置并不总是生效的,具体的说明可参考 TLSConfig 字段的说明。
	Certificates []*Certificate `yaml:"certificates,omitempty" json:"certificates,omitempty" xml:"certificates,omitempty"`

	// 是否禁用自动生成 OPTIONS 和 HEAD 请求的处理
	DisableOptions bool `yaml:"disableOptions,omitempty" json:"disableOptions,omitempty" xml:"disableOptions,omitempty"`
	DisableHead    bool `yaml:"disableHead,omitempty" json:"disableHead,omitempty" xml:"disableHead,omitempty"`

	// 指定静态内容
	//
	// 键名为 URL 路径,键值为文件地址
	//
	// 比如在 Domain 和 Root 的值分别为 example.com 和 blog 时,
	// 将 Static 的值设置为 /admin ==> ~/data/assets/admin
	// 表示将 example.com/blog/admin/* 解析到 ~/data/assets/admin 目录之下。
	Static Map `yaml:"static,omitempty" json:"static,omitempty" xml:"static,omitempty"`

	// 应用于 http.Server 的几个变量
	ReadTimeout       Duration `yaml:"readTimeout,omitempty" json:"readTimeout,omitempty" xml:"readTimeout,omitempty"`
	WriteTimeout      Duration `yaml:"writeTimeout,omitempty" json:"writeTimeout,omitempty" xml:"writeTimeout,omitempty"`
	IdleTimeout       Duration `yaml:"idleTimeout,omitempty" json:"idleTimeout,omitempty" xml:"idleTimeout,omitempty"`
	ReadHeaderTimeout Duration `yaml:"readHeaderTimeout,omitempty" json:"readHeaderTimeout,omitempty" xml:"readHeaderTimeout,omitempty"`
	MaxHeaderBytes    int      `yaml:"maxHeaderBytes,omitempty" json:"maxHeaderBytes,omitempty" xml:"maxHeaderBytes,omitempty"`

	// 指定关闭服务时的超时时间
	//
	// 如果此值不为 0,则在关闭服务时会调用 http.Server.Shutdown 函数等待关闭服务,
	// 否则直接采用 http.Server.Close 立即关闭服务。
	ShutdownTimeout Duration `yaml:"shutdownTimeout,omitempty" json:"shutdownTimeout,omitempty" xml:"shutdownTimeout,omitempty"`

	// 时区名称
	//
	// 可以是 Asia/Shanghai 等,具体可参考:
	// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
	//
	// 为空和 Local(注意大小写) 值都会被初始化本地时间。
	Timezone string `yaml:"timezone,omitempty" json:"timezone,omitempty" xml:"timezone,omitempty"`

	// 本地化消息的管理组件
	//
	// 为空的情况下会引用 golang.org/x/text/message.DefaultCatalog 对象。
	//
	// golang.org/x/text/message/catalog 提供了 NewBuilder 和 NewFromMap
	// 等方式构建 Catalog 接口实例。
	Catalog catalog.Catalog `yaml:"-" json:"-" xml:"-"`

	// 指定中间件
	//
	// Middlewares 和 Filters 都表示中间件,两者的功能没有本质上的差别。
	// 之所以提供了两个类型,是因为 Middlewares 兼容 http.Handler 类型,
	// 可以对市面上大部分的中间件稍加改造即可使用,而 Filter
	// 则提供了部分 http.Handler 不存在的数据字段,且两者不能交替出现,
	// 二脆同时提供两种中间件。
	//
	// 在使用上,永远是 Middlewares 在 Filters 之前调用。
	Middlewares []Middleware `yaml:"-" json:"-" xml:"-"`
	Filters     []Filter     `yaml:"-" json:"-" xml:"-"`

	// 指定各类媒体类型的编解码函数
	Marshalers   map[string]mimetype.MarshalFunc   `yaml:"-" json:"-" xml:"-"`
	Unmarshalers map[string]mimetype.UnmarshalFunc `yaml:"-" json:"-" xml:"-"`

	// 指定生成 Result 的方法
	//
	// 可以为空,表示采用 CTXServer 的默认值。
	ResultBuilder context.BuildResultFunc `yaml:"-" json:"-" xml:"-"`

	// 指定 https 模式下的证书配置项
	//
	// 如果用户指定了 Certificates 字段,则会根据此字段生成,
	// 用户也可以自已覆盖此值,比如采用 golang.org/x/crypto/acme/autocert.Manager.TLSConfig
	// 配置 Let's Encrypt。
	TLSConfig *tls.Config `yaml:"-" json:"-" xml:"-"`

	// 返回给用户的错误提示信息
	//
	// 对键名作了一定的要求:要求最高的三位数必须是一个 HTTP 状态码,
	// 比如 40001,在返回给客户端时,会将 400 作为状态码展示给用户,
	// 同时又会将 40001 和对应的消息发送给用户。
	//
	// 该数据最终由 context.Server.AddMessages 添加。
	Results map[int]string `yaml:"-" json:"-" xml:"-"`

	// 指定错误页面的处理方式
	ErrorHandlers []*ErrorHandler `yaml:"-" json:"-" xml:"-"`

	// 指定用于触发关闭服务的信号
	//
	// 如果为 nil,表示未指定任何信息,如果是长度为 0 的数组,则表示任意信号,
	// 如果指定了多个相同的值,则该信号有可能多次触发。
	ShutdownSignal []os.Signal `yaml:"-" json:"-" xml:"-"`
	// contains filtered or unexported fields
}

Config 提供了初始化 Web 对象的基本参数

type Context

type Context = context.Context

Context 定义了在单个 HTTP 请求期间的上下文环境

是对 http.ResponseWriter 和 http.Request 的简单包装。

type Debug added in v0.18.0

type Debug struct {
	Pprof string `yaml:"pprof,omitempty" json:"pprof,omitempty" xml:"pprof,omitempty"`
	Vars  string `yaml:"vars,omitempty" json:"vars,omitempty" xml:"vars,omitempty"`
}

Debug 调试信息的配置

type Duration added in v0.32.0

type Duration time.Duration

Duration 封装 time.Duration 以实现对 JSON、XML 和 YAML 的解析

func (Duration) Duration added in v0.32.0

func (d Duration) Duration() time.Duration

Duration 转换成 time.Duration

func (Duration) MarshalJSON added in v0.32.0

func (d Duration) MarshalJSON() ([]byte, error)

MarshalJSON json.Marshaler 接口

func (Duration) MarshalXML added in v0.32.0

func (d Duration) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML xml.Marshaler 接口

func (Duration) MarshalYAML added in v0.32.0

func (d Duration) MarshalYAML() (interface{}, error)

MarshalYAML yaml.Marshaler 接口

func (*Duration) UnmarshalJSON added in v0.32.0

func (d *Duration) UnmarshalJSON(b []byte) error

UnmarshalJSON json.Unmarshaler 接口

func (*Duration) UnmarshalXML added in v0.32.0

func (d *Duration) UnmarshalXML(de *xml.Decoder, start xml.StartElement) error

UnmarshalXML xml.Unmarshaler 接口

func (*Duration) UnmarshalYAML added in v0.32.0

func (d *Duration) UnmarshalYAML(u func(interface{}) error) error

UnmarshalYAML yaml.Unmarshaler 接口

type ErrorHandler added in v0.33.0

type ErrorHandler struct {
	Status  []int
	Handler ErrorHandlerFunc
}

ErrorHandler 错误处理的配置

type ErrorHandlerFunc added in v0.33.0

type ErrorHandlerFunc = errorhandler.HandleFunc

ErrorHandlerFunc 错误状态码对应的处理函数原型

type Filter added in v0.33.0

type Filter = context.Filter

Filter 针对 Context 的中间件

type HandlerFunc added in v0.33.0

type HandlerFunc = context.HandlerFunc

HandlerFunc 路由项处理函数原型

type InstallFunc added in v0.33.0

type InstallFunc func(*Web)

InstallFunc 安装模块的函数签名

type Job added in v0.33.0

type Job = scheduled.Job

Job 计划任务的模型

type JobFunc added in v0.33.0

type JobFunc = scheduled.JobFunc

JobFunc 计划任务执行的函数

type Map added in v0.32.0

type Map map[string]string

Map 定义 map[string]string 类型

唯一的功能是为了 xml 能支持 map。

func (Map) MarshalXML added in v0.32.0

func (p Map) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implement xml.Marshaler

func (*Map) UnmarshalXML added in v0.32.0

func (p *Map) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implement xml.Unmarshaler

type Middleware added in v0.33.0

type Middleware = middleware.Middleware

Middleware 中间件的类型定义

type Module

type Module struct {
	Tag
	Name        string
	Description string
	Deps        []string
	// contains filtered or unexported fields
}

Module 表示模块信息

模块仅作为在初始化时在代码上的一种分类,一旦初始化完成, 则不再有模块的概念,修改模块的相关属性,也不会对代码有实质性的改变。

func (*Module) AddAt added in v0.33.0

func (m *Module) AddAt(title string, f JobFunc, spec string, delay bool)

AddAt 添加新的定时任务

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

func (*Module) AddCron added in v0.33.0

func (m *Module) AddCron(title string, f JobFunc, spec string, delay bool)

AddCron 添加新的定时任务

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

func (*Module) AddFilters added in v0.33.0

func (m *Module) AddFilters(filter ...Filter)

AddFilters 添加过滤器

按给定参数的顺序反向依次调用。

func (*Module) AddJob added in v0.33.0

func (m *Module) AddJob(title string, f JobFunc, scheduler schedulers.Scheduler, delay bool)

AddJob 添加新的计划任务

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

func (*Module) AddService added in v0.33.0

func (m *Module) AddService(f ServiceFunc, title string)

AddService 添加新的服务

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

func (*Module) AddTicker added in v0.33.0

func (m *Module) AddTicker(title string, f JobFunc, dur time.Duration, imm, delay bool)

AddTicker 添加新的定时任务

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

func (*Module) Delete added in v0.33.0

func (m *Module) Delete(path string, h HandlerFunc) *Module

Delete 指定个 DELETE 请求处理

func (*Module) Get added in v0.33.0

func (m *Module) Get(path string, h HandlerFunc) *Module

Get 指定一个 GET 请求

func (*Module) Handle added in v0.33.0

func (m *Module) Handle(path string, h HandlerFunc, method ...string) *Module

Handle 添加路由项

func (*Module) NewTag added in v0.33.0

func (m *Module) NewTag(tag string) *Tag

NewTag 为当前模块生成特定名称的子模块

若已经存在,则直接返回该子模块。

Tag 是依赖关系与当前模块相同,但是功能完全独立的模块, 一般用于功能更新等操作。

func (*Module) Options added in v0.33.0

func (m *Module) Options(path, allow string) *Module

Options 指定个 OPTIONS 请求处理

func (*Module) Patch added in v0.33.0

func (m *Module) Patch(path string, h HandlerFunc) *Module

Patch 指定个 PATCH 请求处理

func (*Module) Post added in v0.33.0

func (m *Module) Post(path string, h HandlerFunc) *Module

Post 指定个 POST 请求处理

func (*Module) Prefix added in v0.33.0

func (m *Module) Prefix(prefix string, filter ...Filter) *Prefix

Prefix 声明一个 Prefix 实例

func (*Module) Put added in v0.33.0

func (m *Module) Put(path string, h HandlerFunc) *Module

Put 指定个 PUT 请求处理

func (*Module) Resource added in v0.33.0

func (m *Module) Resource(pattern string, filter ...Filter) *Resource

Resource 生成资源项

type Prefix added in v0.33.0

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

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

func (*Prefix) Delete added in v0.33.0

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

Delete 指定个 DELETE 请求处理

func (*Prefix) Get added in v0.33.0

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

Get 指定一个 GET 请求

func (*Prefix) Handle added in v0.33.0

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

Handle 添加路由项

func (*Prefix) Module added in v0.33.0

func (p *Prefix) Module() *Module

Module 返回关联的模块实例

func (*Prefix) Options added in v0.33.0

func (p *Prefix) Options(path, allow string) *Prefix

Options 指定个 OPTIONS 请求处理

func (*Prefix) Patch added in v0.33.0

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

Patch 指定个 PATCH 请求处理

func (*Prefix) Post added in v0.33.0

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

Post 指定个 POST 请求处理

func (*Prefix) Put added in v0.33.0

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

Put 指定个 PUT 请求处理

func (*Prefix) Resource added in v0.33.0

func (p *Prefix) Resource(pattern string, filter ...Filter) *Resource

Resource 生成资源项

type Resource added in v0.33.0

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

Resource 以资源地址为对象的路由配置

func (*Resource) Delete added in v0.33.0

func (r *Resource) Delete(h HandlerFunc) *Resource

Delete 指定个 DELETE 请求处理

func (*Resource) Get added in v0.33.0

func (r *Resource) Get(h HandlerFunc) *Resource

Get 指定一个 GET 请求

func (*Resource) Handle added in v0.33.0

func (r *Resource) Handle(h HandlerFunc, method ...string) *Resource

Handle 添加路由项

func (*Resource) Options added in v0.33.0

func (r *Resource) Options(allow string) *Resource

Options 指定个 OPTIONS 请求处理

func (*Resource) Patch added in v0.33.0

func (r *Resource) Patch(h HandlerFunc) *Resource

Patch 指定个 PATCH 请求处理

func (*Resource) Post added in v0.33.0

func (r *Resource) Post(h HandlerFunc) *Resource

Post 指定个 POST 请求处理

func (*Resource) Put added in v0.33.0

func (r *Resource) Put(h HandlerFunc) *Resource

Put 指定个 PUT 请求处理

type Result

type Result = context.Result

Result 定义了返回给用户的错误信息

type Service added in v0.25.0

type Service = service.Service

Service 服务模型

type ServiceFunc added in v0.25.3

type ServiceFunc = service.Func

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

type ServiceState added in v0.33.0

type ServiceState = service.State

ServiceState 服务的状态值

type Tag added in v0.28.0

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

Tag 表示与特定标签相关联的初始化函数列表

依附于模块,共享模块的依赖关系。

一般是各个模块下的安装脚本使用。

func (*Tag) AddInit added in v0.33.0

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

AddInit 添加一个初始化函数

title 该初始化函数的名称。

type Web added in v0.32.0

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

Web 管理整个项目所有实例

func Classic added in v0.25.0

func Classic(dir string) (*Web, error)

Classic 返回一个开箱即用的 Web 实例

会加载 dir 目录下的 web.yaml 和 logs.xml 两个配置文件内容,并用于初始化 Web 实例。

func GetWeb added in v0.32.0

func GetWeb(ctx *Context) *Web

GetWeb 从 ctx 中获取 *Web 实例

func New added in v0.32.0

func New(l *logs.Logs, conf *Config) (web *Web, err error)

New 返回 Web 对象

func (*Web) CTXServer added in v0.32.0

func (web *Web) CTXServer() *context.Server

CTXServer 返回 context.Server 实例

func (*Web) Close added in v0.32.0

func (web *Web) Close() error

Close 关闭服务

func (*Web) HTTPServer added in v0.32.0

func (web *Web) HTTPServer() *http.Server

HTTPServer 返回 http.Server 实例

func (*Web) Init added in v0.33.0

func (web *Web) Init(tag string, info *log.Logger) error

Init 初始化模块

若指定了 tag 参数,则只初始化与该标签相关联的内容。

一旦初始化完成,则不再接受添加新模块,也不能再次进行初始化。 Web 的大部分功能将失去操作意义,比如 Web.NewModule 虽然能添加新模块到 Server,但并不能真正初始化新的模块并挂载。

func (*Web) Jobs added in v0.33.0

func (web *Web) Jobs() []*Job

Jobs 返回计划任务列表

func (*Web) Logs added in v0.33.0

func (web *Web) Logs() *logs.Logs

Logs 返回日志实例

func (*Web) Modules added in v0.32.0

func (web *Web) Modules() []*Module

Modules 当前系统使用的所有模块信息

func (*Web) NewModule added in v0.33.0

func (web *Web) NewModule(name, desc string, deps ...string) *Module

NewModule 声明一个新的模块

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

func (*Web) Serve added in v0.32.0

func (web *Web) Serve() (err error)

Serve 运行 HTTP 服务

func (*Web) Services added in v0.32.0

func (web *Web) Services() []*Service

Services 返回所有的服务列表

func (*Web) Tags added in v0.32.0

func (web *Web) Tags() map[string][]string

Tags 返回所有的子模块名称

键名为模块名称,键值为该模块下的标签列表。

Directories

Path Synopsis
cmd
web command
简单的辅助功能命令行工具
简单的辅助功能命令行工具
Package config 提供了加载配置项内容的各类方法
Package config 提供了加载配置项内容的各类方法
Package context 用于处理单个请求的上下文关系
Package context 用于处理单个请求的上下文关系
mimetype
Package mimetype 提供对各类媒体数据的处理
Package mimetype 提供对各类媒体数据的处理
mimetype/form
Package form 用于处理 www-form-urlencoded 编码 func read(ctx *web.Context) { vals := urls.Values{} ctx.Read(vals) } func write(ctx *web.Context) { vals := urls.Values{} vals.Add("name", "caixw") ctx.Render(http.StatusOK, vals, nil) } form 用户可以通过定义 form 标签自定义输出的名称,比如: type Username struct { Name string `form:"name"` Age int } 转换成 form-data 可能是以下样式: name=jjj&age=18 该方式对数据类型有一定限制: 1.
Package form 用于处理 www-form-urlencoded 编码 func read(ctx *web.Context) { vals := urls.Values{} ctx.Read(vals) } func write(ctx *web.Context) { vals := urls.Values{} vals.Add("name", "caixw") ctx.Render(http.StatusOK, vals, nil) } form 用户可以通过定义 form 标签自定义输出的名称,比如: type Username struct { Name string `form:"name"` Age int } 转换成 form-data 可能是以下样式: name=jjj&age=18 该方式对数据类型有一定限制: 1.
mimetype/gob
Package gob 提供 GOB 格式的编解码
Package gob 提供 GOB 格式的编解码
mimetype/html
Package html 提供输出 HTML 内容的 mimetype.MarshalFunc 函数 tpl := template.ParseFiles(...) mgr := html.New(tpl) mimetype.AddMarshal("text/html", mgr.Marshal) func handle(ctx *web.Context) { ctx.Render(200, html.Tpl("index", map[string]interface{}{...}), nil) }
Package html 提供输出 HTML 内容的 mimetype.MarshalFunc 函数 tpl := template.ParseFiles(...) mgr := html.New(tpl) mimetype.AddMarshal("text/html", mgr.Marshal) func handle(ctx *web.Context) { ctx.Render(200, html.Tpl("index", map[string]interface{}{...}), nil) }
mimetype/mimetypetest
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。
internal
cmd
Package cmd 命令行相关操作
Package cmd 命令行相关操作
cmd/build
Package build 提供编译相关的功能
Package build 提供编译相关的功能
cmd/release
Package release 发布版本号管理
Package release 发布版本号管理
cmd/version
Package version 显示版本号信息
Package version 显示版本号信息
cmd/watch
Package watch 提供热编译功能 功能与 github.com/caixw/gobuild 相同。
Package watch 提供热编译功能 功能与 github.com/caixw/gobuild 相同。
filesystem
Package filesystem 提供与文件系统相关的操作
Package filesystem 提供与文件系统相关的操作
plugintest
Package plugintest 作为插件的功能测试包 NOTE: 该测试如果直接写在功能所在的包,目前版本会报错。
Package plugintest 作为插件的功能测试包 NOTE: 该测试如果直接写在功能所在的包,目前版本会报错。
version
Package version 版本定义
Package version 版本定义
versioninfo
Package versioninfo 提供对版本信息的一些操作
Package versioninfo 提供对版本信息的一些操作
Package service 服务管理
Package service 服务管理

Jump to

Keyboard shortcuts

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