Documentation
¶
Overview ¶
Package result 提供对自定义错误代码的支持
Index ¶
- type BuildFunc
- type Fields
- type Manager
- func (mgr *Manager) AddMessage(status, code int, key message.Reference, v ...interface{})
- func (mgr *Manager) Messages(p *message.Printer) map[int]string
- func (mgr *Manager) NewResult(p *message.Printer, code int) Result
- func (mgr *Manager) NewResultWithFields(p *message.Printer, code int, fields Fields) Result
- type Result
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
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
NewManager 声明 Manager 实例
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
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=不能为空
Click to show internal directories.
Click to hide internal directories.