result

package
v0.39.0 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2021 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package result 提供对自定义错误代码的支持

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BuildFunc added in v0.34.0

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

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

type Fields added in v0.34.0

type Fields = validation.Messages

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

类型为 map[string][]string

type Manager added in v0.34.0

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

Manager 错误消息的管理

func NewManager added in v0.34.0

func NewManager(builder BuildFunc) *Manager

NewManager 声明 Manager 实例

func (*Manager) AddMessage added in v0.34.0

func (mgr *Manager) AddMessage(status, code int, key message.Reference, v ...interface{})

AddMessage 添加一条错误信息

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

func (*Manager) Messages added in v0.34.0

func (mgr *Manager) Messages(p *message.Printer) map[int]string

Messages 错误信息列表

p 用于返回特定语言的内容。

func (*Manager) NewResult added in v0.34.0

func (mgr *Manager) NewResult(p *message.Printer, code int) Result

NewResult 返回 Result 实例

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

func (*Manager) NewResultWithFields added in v0.34.0

func (mgr *Manager) NewResultWithFields(p *message.Printer, code int, fields Fields) Result

NewResultWithFields 返回 Result 实例

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

type Result

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

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

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

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

Result 自定义错误代码的实现接口

用户可以根据自己的需求,在出错时,展示自定义的错误码以及相关的错误信息格式。 该对象依然有 content 中的相关功能进行解码输出。 只要该对象同时实现了 Result 接口即可。

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

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

func DefaultBuilder added in v0.34.0

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

DefaultBuilder 默认的 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:
      - 不能为空

FormData:

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

Jump to

Keyboard shortcuts

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