Closed utterances-bot closed 2 years ago
这种代码怎么debug
@keepljg 这个和自己写的代码没有什么本质的区别的
我的意识是 这个自动生成http server代码的怎么debug 入口这个方法 protogen.Options{ParamFunc: flags.Set,}.Run(...) 怎么执行的 看代码不好看懂 下那个debug下
我的意识是 这个自动生成http server代码的怎么debug 入口这个方法 protogen.Options{ParamFunc: flags.Set,}.Run(...) 怎么执行的 看代码不好看懂 下那个debug下
这个是 protogen go 的一个方法,这个需要在执行 protoc 的时候去调用它,我一般是打 log 或者用单元测试来 debug,还没用过 dlv 这种来 debug 这个工具
我使用你这个,使用proto文件生成了gin和grpc得代码,但是我发现,如果发生了错误,返回到前端得永远是没有err这一项,您能给我解答一下嘛?我的qq是94583210。请您来给我指点指点
虽然我知道你写的这个自动生成得gin文件里面没有返回,但是他不是放在了gin得context里面了嘛?那前端如何拿到呢?
虽然我知道你写的这个自动生成得gin文件里面没有返回,但是他不是放在了gin得context里面了嘛?那前端如何拿到呢?
只要你返回的 err 满足了这个接口就能返回错误信息
type iCode interface{
HTTPCode() int
Message() string
Code() int
}
这个对应了返回的 httpcode
以及 返回 body 中的 code
和 msg
那这个怎么去满足呢?不是很懂,您这个接口不是自动生成得嘛?
那这个怎么去满足呢?不是很懂,您这个接口不是自动生成得嘛?
@isqiguo
这个没有自动生成,这个需要自行写一个 Error Struct 来满足,不同公司或者个人对错误的定义不一样,所以我这里只是定义了一个接口 举个例子,然后在使用的时候,在底层抛这个业务错误码就行了,具体 err 相关的实践可以看这篇文章 https://lailin.xyz/post/go-training-03.html
// Code 错误码
type Code int
// Error for error
func (code Code) Error() string {
return fmt.Sprintf("WantCode: %d, msg: ", code) + code.String()
}
// Code Code
func (code Code) Code() int {
return int(code)
}
// Message Message
func (code Code) Message() string {
return code.String()
}
// HTTPCode HTTPCode
func (code Code) HTTPCode() int {
c2 := code / 1000000
switch {
case code == 0:
return http.StatusOK
case code > 200 && code < 600:
return int(code)
case c2 > 200 && c2 < 600:
return int(c2)
default:
return http.StatusInternalServerError
}
}
// Errorf Error
func (code Code) Errorf(msg string, v ...interface{}) error {
return errors.Wrapf(code, msg, v...)
}
您写的这个例子缺少了String()这个方法,然后我是copy您得示例,还是缺少了err,可能是我有些一根筋,您能给一份完整的示例嘛? 我是这样写得。return nil, util.Code(400).Errorf("账号或密码错误", err) postman返回得错误是: { "code": 400, "data": null, "msg": "" }
感谢您。
您写的这个例子缺少了String()这个方法,然后我是copy您得示例,还是缺少了err,可能是我有些一根筋,您能给一份完整的示例嘛? 我是这样写得。return nil, util.Code(400).Errorf("账号或密码错误", err) postman返回得错误是: { "code": 400, "data": null, "msg": "" }
感谢您。
https://github.com/mohuishou/protoc-gen-go-gin/tree/master/example 看这个例子吧
您得这个例子我看过。主要是想明白如何去重写您iCode接口会更好,可能我比较愚钝,问您那么多。
您得这个例子我看过。主要是想明白如何去重写您iCode接口会更好,可能我比较愚钝,问您那么多。
刚刚更新了,加了 iCode 接口的实现
非常谢谢您,我重新git clone下来。麻烦您了!
非常谢谢您,我重新git clone下来。麻烦您了!
太客气了
加个好友常联系阿。大佬,我也在深圳。。
为什么不直接把gin.ctx带到service handle中? https://github.com/mohuishou/protoc-gen-go-gin/issues/7
Go工程化(五) API 设计下: 基于 protobuf 自动生成 gin 代码 - Mohuishou
mohuishou 的 技术博客, 关注云原生, Go, K8s, Docker, 微服务等技术
https://lailin.xyz/post/go-training-week4-protoc-gen-go-gin.html