10-11 章 注册返回200 还是注册失败
来源:10-12 编码实战: 改造api网关service
noblenooble
2020-05-01

我看了前段代码要resp.code 返回10000才会提示注册成功 common package 里的code 是9999+ status 这里resp.code 是怎么算得?
3回答
-
参考这里https://git.imooc.com/coding-323/filestore-server/src/master/service/account/handler/user.go:
// Signup : 处理用户注册请求 func (u *User) Signup(ctx context.Context, req *proto.ReqSignup, res *proto.RespSignup) error { username := req.Username passwd := req.Password // 参数简单校验 if len(username) < 3 || len(passwd) < 5 { res.Code = common.StatusParamInvalid res.Message = "注册参数无效" return nil } // 对密码进行加盐及取Sha1值加密 encPasswd := util.Sha1([]byte(passwd + cfg.PasswordSalt)) // 将用户信息注册到用户表中 dbResp, err := dbcli.UserSignup(username, encPasswd) if err == nil && dbResp.Suc { res.Code = common.StatusOK res.Message = "注册成功" } else { res.Code = common.StatusRegisterFailed res.Message = "注册失败" } return nil }应该是 dbResp, err := dbcli.UserSignup(username, encPasswd) 这里出的错。
032020-05-04 -
noblenooble
提问者
2020-05-01
老师我不知道你有没有明白我的提问

这里上传是10003
filestore-server/common/code.go 应该是这个代码返回

但我接口请求是200 为什么这里会返回10003???
按理来说200 是StatusOk 为1 请求应该是iota+9999 =10000才对
012020-05-02 -
xiaomo
2020-05-01
同学你好,common包下的状态码属于业务级别的状态码,具体的数值是可以自己定义的,没有特别的算法。
截图里的200是http协议级别的状态码,只代表了当前的http请求正常完成了处理,与具体的业务无关。
如注册时,服务发现账号重复注册了,可以返回一个特定状态码(如1001)告诉客户端这个问题,而http响应码也是200;注册时发现密码无效,返回特定状态码(如1002), 而http响应码也是200. 当注册接口不存在时,这时http响应码就是404了。。。
http响应码与resp.Code的主要位置区别在于,http响应码在repsonse header中,resp.Code在response body中。
可以仔细查查后端注册代码哪里报了错误~~
00
相似问题

