app

package
v0.26.0 Latest Latest
Warning

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

Go to latest
Published: May 12, 2019 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package app 核心功能的实现

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Grace

func Grace(app *App, sig ...os.Signal)

Grace 指定触发 Shutdown() 的信号,若为空,则任意信号都触发。

多次调用,则每次指定的信号都会起作用,如果由传递了相同的值, 则有可能多次触发 Shutdown()。

NOTE: 传递空值,与不调用,其结果是不同的。 若是不调用,则不会处理任何信号;若是传递空值调用,则是处理任何要信号。

Types

type App

type App struct {
	*module.Modules
	// contains filtered or unexported fields
}

App 程序运行实例

func New

func New(webconf *webconfig.WebConfig, logs *logs.Logs, get GetResultFunc) (*App, error)

New 声明一个新的 App 实例

func (*App) AddCompresses added in v0.25.0

func (app *App) AddCompresses(m map[string]compress.WriterFunc) error

AddCompresses 添加压缩处理函数

func (*App) AddMessages added in v0.26.0

func (app *App) AddMessages(status int, msgs map[int]string)

AddMessages 添加一组错误信息。

status 指定了该错误代码反馈给客户端的 HTTP 状态码; msgs 中,键名表示的是该错误的错误代码; 键值表示具体的错误描述内容。

func (*App) Close

func (app *App) Close() error

Close 关闭服务。

无论配置文件如果设置,此函数都是直接关闭服务,不会等待。

func (*App) ErrorHandlers added in v0.21.0

func (app *App) ErrorHandlers() *errorhandler.ErrorHandler

ErrorHandlers 错误处理功能

func (*App) IsDebug

func (app *App) IsDebug() bool

IsDebug 是否处于调试模式

func (*App) LocalPrinter added in v0.25.0

func (app *App) LocalPrinter(tag language.Tag, opts ...xmessage.Option) *xmessage.Printer

LocalPrinter 获取本地化的输出对象

func (*App) Location added in v0.26.0

func (app *App) Location() *time.Location

Location 当前设置的时区信息

func (*App) Messages added in v0.21.0

func (app *App) Messages(p *xmessage.Printer) map[int]string

Messages 错误信息列表

p 用于返回特定语言的内容。如果为空,则表示返回原始值。

func (*App) Mimetypes

func (app *App) Mimetypes() *mimetype.Mimetypes

Mimetypes 返回 mimetype.Mimetypes

func (*App) NewResult added in v0.26.0

func (app *App) NewResult(code int) Result

NewResult 查找指定代码的错误信息

func (*App) Path added in v0.22.0

func (app *App) Path(p string) string

Path 生成路径部分的地址

基于 app.webConfig.URL 中的路径部分。

func (*App) Serve

func (app *App) Serve() (err error)

Serve 加载各个模块的数据,运行路由,执行监听程序。

当调用 Shutdown 关闭服务时,会等待其完成未完的服务,才返回 http.ErrServerClosed

func (*App) Server added in v0.25.0

func (app *App) Server() *http.Server

Server 获取 http.Server 实例

func (*App) Shutdown

func (app *App) Shutdown() error

Shutdown 关闭所有服务。

根据配置文件中的配置项,决定当前是直接关闭还是延时之后关闭。

func (*App) URL

func (app *App) URL(path string) string

URL 构建一条基于 app.webconfig.URL 的完整 URL

type GetResultFunc added in v0.26.0

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

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

type Result added in v0.26.0

type Result interface {
	error

	// 添加详细的内容
	Add(key, val string)

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

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

Result 提供了自定义错误码的功能

比如类似以下的错误内容:

{
    'message': 'error message',
    'code': 4000001,
    'detail':[
        {'field': 'username': 'message': '已经存在相同用户名'},
        {'field': 'username': 'message': '已经存在相同用户名'},
    ]
}

用户可以根据自己的需求,在出错时,展示自定义的错误码以及相关的错误信息。 其中通过 Add 和 Set 可以添加具体的字段错误信息。

可以查看 internal/resulttest 查看 Result 的实现方式。

Jump to

Keyboard shortcuts

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