一键生成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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值