Documentation ¶
Overview ¶
Package web 一个微型的 RESTful API 框架。
配置文件
配置文件的映射对象在 internal/webconfig 包中,其中有各个字段的详细说明。 用户如果需要添加一些自定义的配置项,需要自行再添加其它名称的配置文件, 文件地址最好通过 web.File 来获取,这样可以和框架本身的配置文件存在同一目录下。
框架了除了本身的 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 类型的数据。需要用户通过 Mimetypes().AddMarshals() 和 Mimetypes().AddUnmarshals() 添加相关的处理函数。 添加方式如下:
Mimetypes().AddMarshals(map[string]mimetype.MarshalFunc{ "application/json": json.Marshal, }) Mimetypes().AddUnmarshals(map[string]mimetype.UnmarshalFunc{ "application/json": json.Unmarshal, })
之后,通过 web.NewContext() 获得的 context 对象,会根据用户的 Accept 和 Content-Type 自动使用相应的解析和输出格式。
当然用户也可以直接构建一个 context.Context 对象来生成一个一次性的对象。
返回结果
context 包下的 Result 表示在出错时的输出内容。在使用前,用户需要调用 web.NewMessages() 添加各类错误代码。
模块
用户可以把功能相对独立的内容当作一个模块进行封装。框架本身提供了 web.NewModule() 对模块进行了依赖管理。用户可以在 web.NewModule() 返回对象中, 对模块进行初始化和路由项的添加。所有模块会在 web.Run() 中进行初始化。
Index ¶
- Constants
- func AddMiddlewares(m ...middleware.Middleware)
- func App() *app.App
- func CRITICAL() *log.Logger
- func Close() error
- func Critical(v ...interface{})
- func Criticalf(format string, v ...interface{})
- func DEBUG() *log.Logger
- func Debug(v ...interface{})
- func Debugf(format string, v ...interface{})
- func ERROR() *log.Logger
- func Error(v ...interface{})
- func Errorf(format string, v ...interface{})
- func Fatal(code int, v ...interface{})
- func Fatalf(code int, format string, v ...interface{})
- func File(path string) string
- func FlushLogs()
- func Grace(sig ...os.Signal)
- func INFO() *log.Logger
- func Info(v ...interface{})
- func Infof(format string, v ...interface{})
- func Init(dir string) (err error)
- func InitModules(tag string) error
- func IsDebug() bool
- func Load(r io.Reader, typ string, v interface{}) error
- func LoadFile(path string, v interface{}) error
- func Messages(p *message.Printer) map[int]string
- func Mimetypes() *mimetype.Mimetypes
- func Modules() []*module.Module
- func Mux() *mux.Mux
- func NewMessages(status int, messages map[int]string)
- func Panic(v ...interface{})
- func Panicf(format string, v ...interface{})
- func Path(path string) string
- func RegisterOnShutdown(f func())
- func Serve() error
- func Shutdown() error
- func TRACE() *log.Logger
- func Tags() []string
- func Trace(v ...interface{})
- func Tracef(format string, v ...interface{})
- func URL(path string) string
- func WARN() *log.Logger
- func Warn(v ...interface{})
- func Warnf(format string, v ...interface{})
- type Context
- type Module
Constants ¶
const ( // Version 当前框架的版本 Version = "0.23.0" // MinimumGoVersion 需求的最低 Go 版本 // 修改此值,记得同时修改 .travis.yml 文件中的版本依赖。 MinimumGoVersion = "1.11" )
Variables ¶
This section is empty.
Functions ¶
func AddMiddlewares ¶ added in v0.18.0
func AddMiddlewares(m ...middleware.Middleware)
AddMiddlewares 设置全局的中间件,可多次调用。
func CRITICAL ¶ added in v0.18.0
CRITICAL 获取 CRITICAL 级别的 log.Logger 实例,在未指定 critical 级别的日志时,该实例返回一个 nil。
func Critical ¶ added in v0.18.0
func Critical(v ...interface{})
Critical 相当于 CRITICAL().Println(v...)的简写方式
func Criticalf ¶ added in v0.18.0
func Criticalf(format string, v ...interface{})
Criticalf 相当于 CRITICAL().Printf(format, v...) 的简写方式
func Debugf ¶ added in v0.18.0
func Debugf(format string, v ...interface{})
Debugf 相当于 DEBUG().Printf(format, v...) 的简写方式
func Errorf ¶ added in v0.18.0
func Errorf(format string, v ...interface{})
Errorf 相当于 ERROR().Printf(format, v...) 的简写方式
func Grace ¶
Grace 指定触发 Shutdown() 的信号,若为空,则任意信号都触发。
多次调用,则每次指定的信号都会起作用,如果由传递了相同的值, 则有可能多次触发 Shutdown()。
NOTE: 传递空值,与不调用,其结果是不同的。 若是不调用,则不会处理任何信号;若是传递空值调用,则是处理任何要信号。
func Info ¶ added in v0.18.0
func Info(v ...interface{})
Info 相当于 INFO().Println(v...) 的简写方式 Info 函数默认是带换行符的,若需要不带换行符的,请使用 DEBUG().Print() 函数代替。 其它相似函数也有类型功能。
func Infof ¶ added in v0.18.0
func Infof(format string, v ...interface{})
Infof 相当于 INFO().Printf(format, v...) 的简写方式
func NewMessages ¶ added in v0.21.0
NewMessages 添加新的错误消息代码
func Panicf ¶ added in v0.18.0
func Panicf(format string, v ...interface{})
Panicf 输出错误信息,然后触发 panic。
func RegisterOnShutdown ¶ added in v0.16.1
func RegisterOnShutdown(f func())
RegisterOnShutdown 注册在关闭服务时需要执行的操作。
func Tracef ¶ added in v0.18.0
func Tracef(format string, v ...interface{})
Tracef 相当于 TRACE().Printf(format, v...) 的简写方式
Types ¶
type Context ¶
Context 等同于 context.Context,方便调用者使用
func NewContext ¶
func NewContext(w http.ResponseWriter, r *http.Request) *Context
NewContext 根据当前配置,生成 context.Context 对象,若是出错则 panic
Directories ¶
Path | Synopsis |
---|---|
Package app 核心功能的实现
|
Package app 核心功能的实现 |
cmd
|
|
web
简单的辅助功能命令行工具。
|
简单的辅助功能命令行工具。 |
Package config 提供了对多种格式配置文件的支持
|
Package config 提供了对多种格式配置文件的支持 |
Package context 用于处理单个请求的上下文关系。
|
Package context 用于处理单个请求的上下文关系。 |
internal
|
|
cmd/create
Package create 用于创建新项目的子命令
|
Package create 用于创建新项目的子命令 |
cmd/help
Package help 管理 web help xx 的显示信息
|
Package help 管理 web help xx 的显示信息 |
cmd/version
Package version 显示版本号信息
|
Package version 显示版本号信息 |
cmd/watch
Package watch 提供热编译功能。
|
Package watch 提供热编译功能。 |
messages
Package messages 管理错误状态码与其对应的消息内容
|
Package messages 管理错误状态码与其对应的消息内容 |
modules
Package modules 处理模块信息
|
Package modules 处理模块信息 |
modules/dep
Package dep 管理模块的依赖信息,并按照依赖顺序进行初始化。
|
Package dep 管理模块的依赖信息,并按照依赖顺序进行初始化。 |
webconfig
Package webconfig web.yaml 配置文件对应的内容。
|
Package webconfig web.yaml 配置文件对应的内容。 |
Package mimetype 提供了对编码的支持。
|
Package mimetype 提供了对编码的支持。 |
form
Package form 用于处理 www-form-urlencoded 编码 func read(w http.ResponseWriter, r *http.Request) { ctx := web.New(w, r) vals := urls.Values{} !ctx.Read(vals) } func write(w http.ResponseWriter, r *http.Request) { ctx := web.New(w, r) vals := urls.Values{} vals.Add("name", "caixw") ctx.Render(http.StatusOK, vals, nil) }
|
Package form 用于处理 www-form-urlencoded 编码 func read(w http.ResponseWriter, r *http.Request) { ctx := web.New(w, r) vals := urls.Values{} !ctx.Read(vals) } func write(w http.ResponseWriter, r *http.Request) { ctx := web.New(w, r) vals := urls.Values{} vals.Add("name", "caixw") ctx.Render(http.StatusOK, vals, nil) } |
gob
Package gob 提供 GOB 格式的编解码
|
Package gob 提供 GOB 格式的编解码 |
html
Package html 提供输出 HTML 内容的 encoding.MarshalFunc 函数。
|
Package html 提供输出 HTML 内容的 encoding.MarshalFunc 函数。 |
mimetypetest
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。
|
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。 |
Package module 提供模块的的相关功能。
|
Package module 提供模块的的相关功能。 |