生成CRUD的api接口代码东西都比较成熟了,CRUD代码都是标准化固定化的,比较简单生成,关于恣意自定义的api接口代码,应该不少开发者仍是手艺编写,这些不是标准化接口代码,应该如何生成呢?

这儿的解决方案是运用protobuf协议来描绘api接口,经过插件protoc-gen-go-gin生成web服务的恣意api接口代码。

生成通用web服务代码生成恣意api接口代码这两个功用现已集成在生成代码东西sponge中。

  • 装置sponge地址:github.com/zhufuyi/spo…

装置完sponge后,执行命令翻开UI界面:

sponge run

快速创立web项目

创立web服务前先预备一个proto文件,proto文件要求必须包括路由描绘信息swagger描绘信息,user.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";
// 生成*.swagger.json基本信息
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",
    };
  }
}
message RegisterRequest {
  string email = 1;
  string password = 2;
}
message RegisterReply {
  int64   id = 1;
}

进入sponge的UI界面,点击左面菜单栏【protobuf】–> 【Web类型】–>【创立web项目】,填写一些参数就能够生成web服务项目代码了。

web框架运用 gin,还包括了swagger文档、常用的服务治理功用代码,构建部署脚本等,运用什么数据库由自己选择。

生成web服务项目代码的详细演示进程请看B站视频 www.bilibili.com/video/BV1CX…

如何一键生成通用的web服务(gin)完整项目代码,让你的开发效率提升10倍

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

# 生成api接口代码,生成注册路由代码,生成swagger文档
make docs
# 翻开internal/handler/user_logic.go,这是生成的api接口代码,里面有一行提示填写事务逻辑代码的panic代码,在这儿填写事务逻辑
# api接口的注册路由、输入参数和返回结果的go结构体代码、swagger文档、定义错误码都现已生成了,只需填写事务逻辑代码
# 编译和发动web服务
make run

在浏览器翻开 http://localhost:8080/apis/swagger/index.html 就能够测验api接口了。

如何一键生成通用的web服务(gin)完整项目代码,让你的开发效率提升10倍


批量增加恣意api接口代码嵌入到web服务

在web服务目录api/user/v1下的proto文件增加登录和登出2个api接口,也能够在新创立的proto文件增加api接口,新增加内容如下:

// api 接口的路由和swagger描绘
  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",
    };
  }
  rpc Logout(LogoutRequest) returns (LogoutReply) {
    option (google.api.http) = {
      post: "/api/v1/logout"
      body: "*"
    };
    option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
      summary: "登出",
      description: "登出",
      tags: "user",
    };
  }
// --------------------------------------
message LoginRequest {
  string email = 1;
  string password = 2;
}
message LoginReply {
  string token = 1;
}
message LogoutRequest {
  string token = 1;
}
message LogoutReply {}

增加api接口的详细演示进程请看B站视频 www.bilibili.com/video/BV1P5…

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

# 生成api接口代码,生成注册路由代码,生成swagger文档
make proto
# 进入internal/handler/目录,翻开带有日期后缀的文件,把新增加的接口代码复制到user_logic.go文件中,去掉panic代码提示代码,并填写事务逻辑
# 铲除带有日期后缀文件
make clean
# 编译和发动web服务
make run

在浏览器翻开 http://localhost:8080/apis/swagger/index.html 就能够测验新增的api接口了。

如何一键生成通用的web服务(gin)完整项目代码,让你的开发效率提升10倍