当前位置: 首页> 财经> 产业 > go-zero中api和rpc的使用步骤

go-zero中api和rpc的使用步骤

时间:2025/7/9 21:29:05来源:https://blog.csdn.net/qq_63728673/article/details/140843038 浏览次数:0次

rpc模块的学习

如果会api模块的编写,rpc文件相差的并不是很多。

image-20240801102155835

看这个目录,主要区别就是少了hander,多了server和最下边两个pb文件,以及client文件夹。

主要运行过程是,先将想要写的接口传入参数和传出参数写到proto文件中:

syntax = "proto3";
option go_package ="./pb";  //
package pb;
// 登录请求消息
message LoginRequest {string userName = 1;string password = 2;
}
// 登录响应消息
message UserLoginResponse {string token = 1; // 修改为 token 而不是 Authorization 更符合常规
}
// 用户信息请求消息
message UserInfoRequest {string authorization = 1; // 对应于请求头中的 Authorization
}
// 用户信息响应消息
message UserInfoResponse {string userName = 1;uint32 id = 2;
}
// 用户服务定义
service UserClient {// 登录接口rpc Login (LoginRequest) returns (UserLoginResponse);// 获取用户信息接口rpc GetUserInfo (UserInfoRequest) returns (UserInfoResponse);
}//   goctl rpc proto -src user.proto -dir .

具体写法可以去官方文档查看。

然后运行命令

 goctl rpc protoc user.proto --go_out=./types --go-grpc_out=./types --zrpc_out=.

为了讲解明白,就用api层和rpc层接口一致来示例:

当我们生成rpc后,为了和api连接:先将rpc注册到etcd(能够让api发现)

image-20240801104922956

为了让api连接,需要将api的config文件中加上rpc的etcd地址

image-20240801105814135

(配置文件中添加etcd的地址和键,找指定的rpc的值)

image-20240801105448712

还有最后一步,依赖注入。

由于我们要在api层调用rpc层的方法,肯定是要先声明userclient才能直接调用到里边的方法

image-20240801110150944

至此,api和rpc的连接已经完成了,然后将api层的逻辑放入到rpc的logic中。

看一个示例:该方法为通过token获取用户信息的get请求。
api的logic层:
image-20240801111144488

通过调用rpc层的方法返回该方法的响应info,返回info中的参数。

rpc层的logic:

image-20240801111334717

具体的逻辑实现,解析token中的id和name,返回给api层的logic。

这个例子没有体现出数据库操作,具体的,当涉及到数据库时,将model层和rpc层与api层并列,让rpc调用到model层的方法,让api层调用rpc层的方法实现。

关键字:go-zero中api和rpc的使用步骤

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: