承接上篇:上篇文章讲到 go-zero
架构设计和项目设计。本篇文章接着这个项目设计,将生成的 app 模块
中 gateway
和 RPC
进行改造。废话不多说,让我们开始!
gateway service
gateway 中我做了一些自定义,在端请求我们后台接口情况下,虽然多数情况是不需要关心错误码的,但是避免不了要某些场景还是需要根据固定错误码去做特殊处理,我自己定义了一个错误类,这个错误类只在 gateway 中使用:
err.go:
package xerr
import "fmt"
type CodeError struct {
errCode int
errMsg string
}
// 属性
func (e *CodeError) GetErrCode() int {
return e.errCode
}
func (e *CodeError) GetErrMsg() string {
return e.errMsg
}
func (e *CodeError) Error() string {
return fmt.Sprintf("ErrCode:%d,ErrMsg:%s", e.errCode, e.errMsg)
}
func New(errCode int, errMsg string) *CodeError {
return &CodeError{errCode: errCode, errMsg: errMsg}
}
func NewErrCode(errCode int) *CodeError {
return &CodeError{errCode: errCode, errMsg: MapErrMsg(errCode)}
}
func NewErrMsg(errMsg string) *CodeError {
return &CodeError{errCode: BAD_REUQEST_ERROR, errMsg: errMsg}
}
errmsg.go
package xerr
var message map[int]string
func init() {
message = make(map[int]string)
message[OK] = "SUCCESS"
message[BAD_REUQEST_ERROR] = "服务器繁忙,请稍后再试"
message[REUQES_PARAM_ERROR] = "参数错误"
message[USER_NOT_FOUND] = "用户不存在"
}
func MapErrMsg(errc