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.Init() 中进行初始化。
Index ¶
- Constants
- func AddCompresses(m map[string]compress.WriterFunc) error
- func AddMessages(status int, messages map[int]string)
- func AddMiddlewares(m middleware.Middleware)
- func App() *app.App
- func CRITICAL() *log.Logger
- func Classic(dir string, get app.GetResultFunc) error
- 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 ErrorHandlers() *errorhandler.ErrorHandler
- 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 Grace(dur time.Duration, sig ...os.Signal)
- func INFO() *log.Logger
- func Info(v ...interface{})
- func Infof(format string, v ...interface{})
- func Init(mgr *config.Manager, configFilename string, get app.GetResultFunc) 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 Location() *time.Location
- func Messages(p *message.Printer) map[int]string
- func Mimetypes() *mimetype.Mimetypes
- func Mux() *mux.Mux
- func Now() time.Time
- func Panic(v ...interface{})
- func Panicf(format string, v ...interface{})
- func ParseTime(layout, value string) (time.Time, error)
- func Path(path string) string
- func Scheduled() *scheduled.Server
- func Schedulers() []*scheduled.Job
- func Serve() error
- func Services() []*app.Service
- func Shutdown(ctx context.Context) error
- func TRACE() *log.Logger
- func Trace(v ...interface{})
- func Tracef(format string, v ...interface{})
- func URL(path string) string
- func Uptime() time.Time
- func WARN() *log.Logger
- func Warn(v ...interface{})
- func Warnf(format string, v ...interface{})
- type Context
- type Module
- type Result
- type SchedulerFunc
- type ServiceFunc
- type Tag
Constants ¶
const ( LogsFilename = "logs.xml" ConfigFilename = "web.yaml" )
两个配置文件的名称。
在 Classic 中,采用了这两个文件名作为日志和框架的配置文件名。
const Version = version.Version
Version 当前框架的版本
Variables ¶
This section is empty.
Functions ¶
func AddCompresses ¶ added in v0.25.0
func AddCompresses(m map[string]compress.WriterFunc) error
AddCompresses 添加压缩处理函数
func AddMessages ¶ added in v0.26.0
AddMessages 添加新的错误消息代码
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 Classic ¶ added in v0.25.0
func Classic(dir string, get app.GetResultFunc) error
Classic 初始化一个可运行的框架环境
dir 为配置文件的根目录
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 ErrorHandlers ¶ added in v0.25.3
func ErrorHandlers() *errorhandler.ErrorHandler
ErrorHandlers 错误处理功能
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 Init ¶
Init 初始化整个应用环境
构建了一个最基本的服务器运行环境,大部分内容采用默认设置。 比如日志为不输出任何内容,如有需要,要调用 Logs() 进行输出通道的设置; 也不会解析任意的 content-type 内容的数据,需要通过 Mimetype 进行进一步的设置。
mgr 为配置文件管理工具; configFilename 为相对于 mgr 目录下的配置文件地址。
重复调用会直接 panic
func Panicf ¶ added in v0.18.0
func Panicf(format string, v ...interface{})
Panicf 输出错误信息,然后触发 panic。
func Tracef ¶ added in v0.18.0
func Tracef(format string, v ...interface{})
Tracef 相当于 TRACE().Printf(format, v...) 的简写方式
Types ¶
type Context ¶
Context 一般在 http.ServeHTTP 中根据 http.ResponseWriter 和 http.Request 初始化获得。 可以在整个函数生命周期中操作相关功能。
等同于 context.Context,方便调用者使用
func NewContext ¶
func NewContext(w http.ResponseWriter, r *http.Request) *Context
NewContext 生成 *Context 对象,若是出错则 panic
type ServiceFunc ¶ added in v0.25.3
type ServiceFunc = app.ServiceFunc
ServiceFunc 服务的报告函数签名。
等同于 app.ServiceFunc,方便调用者使用
Directories ¶
Path | Synopsis |
---|---|
Package app 核心功能的实现
|
Package app 核心功能的实现 |
cmd
|
|
web
简单的辅助功能命令行工具。
|
简单的辅助功能命令行工具。 |
Package context 用于处理单个请求的上下文关系。
|
Package context 用于处理单个请求的上下文关系。 |
internal
|
|
cmd/build
Package build 编译程,直接引用 go build
|
Package build 编译程,直接引用 go build |
cmd/create
Package create 用于创建新项目的子命令
|
Package create 用于创建新项目的子命令 |
cmd/release
Package release 发布版本号管理
|
Package release 发布版本号管理 |
cmd/version
Package version 显示版本号信息
|
Package version 显示版本号信息 |
cmd/watch
Package watch 提供热编译功能。
|
Package watch 提供热编译功能。 |
plugintest
Package plugintest 作为插件的功能测试包 NOTE: 该功能如果直接写在 module 包之下,目前版本会报错。
|
Package plugintest 作为插件的功能测试包 NOTE: 该功能如果直接写在 module 包之下,目前版本会报错。 |
resulttest
Package resulttest 提供了 app.Result 接口的默认实现,方便测试用。
|
Package resulttest 提供了 app.Result 接口的默认实现,方便测试用。 |
version
Package version 版本定义
|
Package version 版本定义 |
versioninfo
Package versioninfo 提供对版本信息的一些操作
|
Package versioninfo 提供对版本信息的一些操作 |
webconfig
Package webconfig 配置文件对应的内容。
|
Package webconfig 配置文件对应的内容。 |
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 内容的 mimetype.MarshalFunc 函数。
|
Package html 提供输出 HTML 内容的 mimetype.MarshalFunc 函数。 |
mimetypetest
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。
|
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。 |
protobuf
Package protobuf 提供对 Google protocol buffers 的支持
|
Package protobuf 提供对 Google protocol buffers 的支持 |
Package module 模块的管理
|
Package module 模块的管理 |