使用go-zero框架的时候,发现在API请求过程中如果出现错误,接口会直接返回http400错误。这对前端或者其它服务端很不友好,他们需要获得详细错误信息,并且不返回http错误。同时,对于有错误的请求和成功的请求,接口返回的数据不一致。 总的来说,我们需要解决以下三个问题: 处理框架自带参数解析失败后产生的error(需自己处...
rpc错误处理 按照正常情况下,go-zero的rpc服务是基于grpc的,默认返回的错误是grpc的status.Error 没法给我们自定义的错误合并,并且也不适合我们自定义的错误,它的错误码、错误类型都是定义死在grpc包中的,ok ,如果我们在rpc中能用自定义错误返回,然后在拦截器统一返回时候转成grpc的status.Error , 那么我们rpc的err...
步骤一:新创建自己的错误处理相关函数 【说明】: 你拿去使用,需要将”go-slot/utils/errorx” 等 import 路径改成你自己实际的路径。我当前项目名称叫 go-slot,utils 是我的一个工具包。 1. 官方给的代码: package response import ( "net/http" "github.com/tal-tech/go-zero/rest/httpx" ) type Body...
go-zero 在 Dec 20, 2021 之后的版本(>= v1.2.5)中,增加了错误码 499(参考nginx 的状态码定义) 来专门表示这类错误,代替了原先的 503 错误码。相关commit:https://github.com/zeromicro/go-zero/commit/4ba2ff7cdd34b73312f5ce17191068146bc676a0 由于我们项目中使用的版本为 v1.2.2 因此以错误...
使用go-zero, 大文件分段写入http 响应流遇到的内存问题。 问题背景 一个嵌入式环境, 使用一个内存100M的linux板子, 作为一个广告机系统, 在前端播放视频的时候出现了oom, 后端视频采用固定分段传输, 依然出现了oom。 go-zero应用层路由代码如下: func(l*MediaVisitLogic)MediaVisit(w http.ResponseWriter,r*http...
使用字符串创建一个错误 部分朋友一样的错误,每次都New,例如,errors.New("b can not be zero")、errors.New("division by zero")、errors.New("division by zero!!!") 我们应该学习go的开发者们的写法,将error统一定义,如果比较多,可以单独写一个文件(例如,errors.go)放在包中,比较少的话可以写在本文件...
接着查看当前抢购商品的库存,如果库存不足就直接返回,如果库存足够的话则认为可以进入下单流程,发消息到kafka,这里kafka使用go-zero提供的kq库,非常简单易用,为秒杀新建一个Topic,配置初始化和逻辑如下: Kafka:Addrs:-127.0.0.1:9092SeckillTopic:seckill-topic ...
1. [错误处理](https://go-zero.dev/cn/docs/advance/error-handle) 2. [模板修改](https://go-zero.dev/cn/docs/advance/template) 二是, model下的模板, 因为官方默认的模板太简单了, 想少写些sql操作相关的代码; ### 全局错误处理 首先pkg包的代码我是从这里直接拷贝过来的https://github.com/zhou...
return 0, errors.New("division by zero")} return a / b, nil } ```上述例子中,`Divide`...