写点什么

一键生成 rpc 网关服务项目代码,让你轻松实现跨语言、跨平台的服务调用

作者:vison
  • 2023-04-27
    广东
  • 本文字数:1569 字

    阅读完需:约 5 分钟

一键生成rpc网关服务项目代码,让你轻松实现跨语言、跨平台的服务调用

rpc 网关是一种充当客户端和 rpc 服务之间中介的服务,它作为客户端和 rpc 服务通信的桥梁,负责将客户端发起的请求转发给 rpc 服务端,并将 rpc 服务端响应返回给客户端。rpc 网关可以实现协议转换、路由转发、负载均衡、缓存、限流等功能,从而提高服务的可用性和性能。


生成rpc网关服务代码生成连接rpc服务代码这两个功能已经集成在生成代码工具 sponge 中。



安装完 sponge 后,执行命令打开 UI 界面:


sponge run
复制代码


快速创建 rpc 网关项目

创建 rpc 网关项目前先准备一个 proto 文件,proto 文件要求必须包含路由描述信息swagger 描述信息,usergw.proto 文件内容如下:


syntax = "proto3";
package api.edusys.v1;
import "google/api/annotations.proto";import "protoc-gen-openapiv2/options/annotations.proto";
option go_package = "edusys/api/user/v1;v1";
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { host: "localhost:8080" base_path: "" info: { title: "user api docs"; version: "v0.0.0"; }; schemes: HTTP; schemes: HTTPS; consumes: "application/json"; produces: "application/json";};
service user { rpc Register(RegisterRequest) returns (RegisterReply) { option (google.api.http) = { post: "/api/v1/register" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "注册", description: "注册", tags: "user", }; } rpc Login(LoginRequest) returns (LoginReply) { option (google.api.http) = { post: "/api/v1/login" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "登录", description: "登录", tags: "user", }; }}
message RegisterRequest { string email = 1; string password = 2;}
message RegisterReply { int64 id = 1;}
message LoginRequest { string email = 1; string password = 2;}
message LoginReply { string token = 1;}
复制代码


进入 sponge 的 UI 界面,点击左边菜单栏【protobuf】--> 【Web 类型】-->【创建 rpc 网关项目】,填写一些参数就可以生成 rpc 网关项目代码了。


web 框架使用 gin,还包含了 swagger 文档、常用的服务治理功能代码,构建部署脚本等。


生成 rpc 网关项目代码的详细演示过程请看 B 站视频 https://www.bilibili.com/video/BV1mV4y1D7k9/



在 rpc 网关服务为了连接 rpc 服务,需要另外生成连接 rpc 服务代码,点击左边菜单栏【Public】--> 【生成连接 rpc 服务代码】,填写一些参数就可以生成代码了,然后把生成的连接 rpc 服务代码移动到 rpc 网关项目代码即可。



在 rpc 网关服务中为了能够调用 rpc 服务的方法,需要把 rpc 服务的 proto 文件复制到 rpc 网关服务的目录api/usergw/v1下。


切换到 usergw 目录,执行命令:


# 生成pb.go代码,生成注册路由代码,生成模板代码,生成swagger文档make proto
# 打开internal/service/usergw_logic.go,这是生成的api接口代码,# 里面有一行提示填写业务逻辑代码的panic代码,在这里填写业务逻辑代码# 先引入生成的连接rpc服务端代码,在业务逻辑中调用rpc服务的方法即可。
# 编译和启动web服务make run
复制代码


在浏览器打开 http://localhost:8080/apis/swagger/index.html 就可以测试 api 接口了。



如果后续需要添加新的 api 接口,在 proto 文件api/usergw/v1/usergw.proto添加 rpc 方法和 message 即可。


如果后续需要连接其他 rpc 服务,重复上面生成连接rpc服务代码步骤即可。



这是根据上面步骤生成的完整源码: https://wwzy.lanzoub.com/i4JUj0t2lo1i


用户头像

vison

关注

还未添加个人签名 2019-06-29 加入

还未添加个人简介

评论

发布
暂无评论
一键生成rpc网关服务项目代码,让你轻松实现跨语言、跨平台的服务调用_微服务_vison_InfoQ写作社区