TypechoJoeTheme

Toasobi的博客

搜索到 5 篇与 的结果 ———
2022-09-16

go-zero 添加拦截器,metadata传值

go-zero 添加拦截器,metadata传值
添加rpc服务端拦截器拦截器如同中间件一样,可以指定调用logic方法前后所执行的指令首先在main函数外做一个性质是全局函数的拦截器<div>func TestServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { fmt.Printf("TestServerInterceptor ====> start \n") fmt.Printf("req ======> %+v \n", req) fmt.Printf("info =====> %+v \n", info) resp, err = handler(ctx, req) fmt.Printf("TestServerInterceptor ====>...
2022-09-16

go-zero专题

0 阅读
0 评论
2022年09月16日
0 阅读
0 评论
2022-09-15

go-zero添加中间件,handler划分group

go-zero添加中间件,handler划分group
go-zero不支持对单个handler添加中间件,只能先定义一个组再对组加。以下为局部中间件示例这里还划分了handler的group然后生成代码,就会自动生成middleware文件,在里面正常编写中间件即可然后记得要在svc下添加中间件初始化,类型是rest.Middleware,初始化则是middleware.NewTestMiddleware().Handle全局中间件呢?一般在user.go中添加。先新建一个与user.api同级的文件夹common,再在下面建一个middleware,里面编写一些全局中间件(同样要拿到局部中间件的格式编写)。然后在user.go下添加这么一行代码 server.Use(middleware.NewSetUidToCtxMiddleware().Handle) //注意这里的middleware是全局middleware,不要调用错了补充:在全局中间件和局部中间件都存在的时候,先用的是全局的中间件,再用的局部的中间件,接着进逻辑,再出局部,最后出全局。
2022-09-15

go-zero专题

0 阅读
0 评论
2022年09月15日
0 阅读
0 评论
2022-09-15

go-zero api与rpc的三种连接方式

go-zero api与rpc的三种连接方式
注:本篇文章的代码部分基于该专题的go-zero从零到注册etcd文章所实现的代码api与rpc之间的连接方式有三种,分别是直连,k8s和etcd,下面我们分别讲解各连接特性以及方式etcd服务发现相较于直连,etcd多用于机器比较多的时候(配集群连接,多个节点)使用,可以动态发现服务,从而不需要更改api并重新发布。那go-zero里面如何使用etcd?我们首先看user-api和user-rpc下的yaml文件[图片上传中...(12472-4xm3sk3opr3)]可以这么说,rpc的配置文件中配置了etcd,那么久默认启动了etcd功能在user-api的yaml文件中启用了一个别名UserRpcConf,在config.go中映射,类型是zrpc.RpcClientConf[图片上传中...(59591-dl3adespl4c)]点进去可以看到该类型包含etcd的字段[图片上传中...(63105-wcmxpdey5sj)]再看看初始化配置的地方svc,这里和logic关联很大可以看到这里通过UserRpcConf配置初始化了客户端那etcd启动后代码流程大致是怎么样的...
2022-09-15

go-zero专题

0 阅读
0 评论
2022年09月15日
0 阅读
0 评论
2022-09-14

go-zero 从零到etcd注册

go-zero 从零到etcd注册
本文章手把手教学从go-zero环境搭建到调用rpc并注册etcd。为了更加直观,我决定实现一个用户查询的方法并连接数据库,模拟真实场景下的go-zero开发。第一步:生成api业务代码首先看下分包一般分包采用这种格式,这里简单编写了一下api文件,包含作者信息,请求体和响应体以及需要注册的路由。之后我们便可以通过api文件通过一行代码用goctl生成代码了(没有goctl的去github下拉取即可)@生成api业务代码 : 进入"服务api目录下,执行下面命令 goctl api go -api *.api -dir ../ --style=goZero //这里注意可能会报错,因为可能要明确指定api文件名字 生成完之后自动生成的文件基本上除了逻辑都最好不要动了生成代码如下:补充:1.基于user.go生成dockerfile:goctl docker -go user.go 2.根据api文件生成md文件:**goctl api doc --dir ./** (进入到user-api文件夹中) 第二步:编写proto生成pb文件,生成user-rpc我们现在项...
2022-09-14

go-zero专题

0 阅读
0 评论
2022年09月14日
0 阅读
0 评论