protobuf使用总结

protobuf校验规格

syntax = "proto3";

package cmp.rds;

import "google/api/annotations.proto";
import "validate/validate.proto";
import "google/protobuf/any.proto";

option go_package = "api/cmp/rds;rds";

service RdsService {
  
  // 同时支持http接口和RPC接口
  rpc CreateInstance (CreateInstanceRequest) returns (CreateInstanceResponse) {
    option (google.api.http) = {
      post: "/rds/v1/createInstance",
      body:"*"
    };
  }
  
  // 仅仅支持rpc接口
  rpc Probe (Request) returns (ProbeResponse) {}
}


// 3. CreateInstanceRequest 创建RDS
message CreateInstanceRequest{
  string instanceName=1 [(validate.rules).string.min_len = 1]; // @gotags: message:"实例名称必填"
  string region=2 [(validate.rules).string.min_len = 1]; // @gotags: message:"region必填"
  string zone=3 [(validate.rules).string.min_len = 1];   // @gotags: message:"可用区必填"
  int32 chargeType=4 [(validate.rules).int32 = {in: [1,2]}]; // @gotags: message:"计费类型只支持按量付费和包年包月"
  int32 engine=5 [(validate.rules).int32 = {in: [1]}]; // @gotags: message:"数据库类型目前只支持MYSQL"
  string engineVersion=6 [(validate.rules).string = {in: ['5.7', '8.0']}]; // @gotags: message:"数据库版本目前只支持5.7和8.0"
  int32 category=7 [(validate.rules).int32 = {in: [1,2]}]; // @gotags: message:"实例系列目前只支持基础版和高可用版"
  string instanceSpec=8 [(validate.rules).string.min_len = 1]; // @gotags: message:"实例规格必填"
  int32 instanceStorage=9 [(validate.rules).int32 = {lte:8000, gte:20}]; // @gotags: message:"存储空间必选20到8000G"
  string vpcId=10[(validate.rules).string.min_len = 1]; // @gotags: message:"私有网络必填"
  string subnetId=11[(validate.rules).string.min_len = 1]; // @gotags: message:"子网必填"
  string securityIpList=12[(validate.rules).string.min_len = 1]; // @gotags: message:"实例的IP白名单列表必填,多条逗号分隔"
  string accountName=13 [(validate.rules).string.min_len = 1]; // @gotags: message:"高级权限用户名必填"
  string accountPassword=14 [(validate.rules).string.min_len = 1]; // @gotags: message:"高级权限密码必填"
  string timeZone=15 [(validate.rules).string.min_len = 1]; // @gotags: message:"时区必填"
  int32 ignoreCase=16[(validate.rules).int32 = {in: [0,1]}]; // @gotags: message:"区分大小写必选"
  int32 usedTime=17;
  int32 period=18;
  int32 instanceStorageType=19[(validate.rules).int32 = {in: [1,2]}]; // @gotags: message:"目前只支持本地盘和云盘"
  int32 instanceNetType=20[(validate.rules).int32 = {in: [1,2]}]; // @gotags: message:"网络连接类型目前只支持公网和内网"
  int32 autoUpgradeMinorVersion=21[(validate.rules).int32 = {in: [0,1]}]; // @gotags: message:"实例升级小版本的方式,取值: 0:手动, 1: 自动升级小版本"
}

message CreateInstanceResponse{
  int32 code=1;
  string requestId=2;
  string message=3;
  Instance data=4;
  message Instance {
    string instanceId=1;
  }
}

message DeleteInstanceRequest{
  string instanceId=1 [(validate.rules).string.min_len = 1]; // @gotags: message:"实例id必填"

}
message DeleteInstanceResponse{
  int32 code=1;
  string requestId=2;
  string message=3;
  Instance data=4;
  message Instance {
    string instanceId=1;
  }
}

message DescribeZonesRequest {
}
message DescribeZonesResponse{
  int32 code=1;
  string requestId=2;
  string message=3;
  ZoneListData data=4;
}
message ZoneListData{
  repeated Region regionList = 1;
  message Region {
    string region=1;
    string name=2;
    string area=3;
    string code=4;
    bool isDefault=5;
    repeated Zone zones=6;
    message Zone {
      string zone=1;
      string name=2;
      bool isDefault=3;
    }
  }
}

message CreateAccountRequest{
 string instanceId=1[(validate.rules).string.min_len=4];// @gotags: message:"实例ID必填"
 string name=2[(validate.rules).string.min_len=2];// @gotags: message:"账户名必填"
 string password=3[(validate.rules).string={
  pattern:   "^[(0-9)(A-Za-z)(!@#$%^&*()_+-=)]{8,32}$",
  }];// @gotags: message:"密码不符合规则"
 int32 kind=4;
 string remark=5;
}

message UpdateAccountRequest{
 string instanceId=1[(validate.rules).string.min_len=4];// @gotags: message:"实例ID必填"
 string name=2[(validate.rules).string.min_len=2];// @gotags: message:"账户名必填"
 oneof update {
    string remark=3[(validate.rules).string.min_len=2];
    string password=4[(validate.rules).string={
      pattern:   "^[(0-9)(A-Za-z)(!@#$%^&*()_+-=)]{8,32}$",
      }];// @gotags: message:"密码不符合规则";
  }
}

添加注解

go install github.com/favadi/protoc-go-inject-tag
protoc-go-inject-tag -input="./direct.pb.go"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值