Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetSourceImportPkg ¶
GetSourceImportPkg 获取源导入包 参数:
- services: []*PbService, 服务列表
返回值:
- []byte, 源导入包字符串
Types ¶
type HTTPPbService ¶
type HTTPPbService struct { Name string // 服务名称,例如 Greeter LowerName string // 服务名称首字母小写,例如 greeter Methods []*RPCMethod // 服务的方法 UniqueMethods []*RPCMethod ImportPkgMap map[string]string // 导入包映射,例如 [userV1]:[userV1 "user/api/user/v1"] }
HTTPPbService 表示 HTTP 服务的字段
func ParseHTTPPbServices ¶
func ParseHTTPPbServices(file *protogen.File) []*HTTPPbService
ParseHTTPPbServices 解析所有 HTTP 服务 参数:
- file: *protogen.File, 即当前解析的 proto 文件
返回值:
- []*HTTPPbService, 解析后的所有 HTTP 服务对象
type HTTPPbServices ¶
type HTTPPbServices []*HTTPPbService
func (HTTPPbServices) MergeImportPkgPath ¶
func (services HTTPPbServices) MergeImportPkgPath() string
MergeImportPkgPath merge import package path
type PbService ¶
type PbService struct { Name string // 服务名称,例如 Greeter LowerName string // 服务名称首字母小写,例如 greeter Methods []*ServiceMethod // 服务的方法 CutServiceName string // 去掉 Service 后缀的服务名称,例如 GreeterService --> Greeter LowerCutServiceName string // 去掉 Service 后缀的服务名称首字母小写,例如 GreeterService --> greeter ImportPkgMap map[string]string // 导入包映射,例如 [userV1]:[userV1 "user/api/user/v1"] ProtoFileDir string // proto 文件目录,例如 api/user/v1 ProtoPkgName string // proto 文件的包名称,例如 userV1 ModuleName string // 模块名称 }
PbService 表示服务的字段
func GetServices ¶
GetServices 解析所有服务 参数:
- file: *protogen.File, 即当前解析的 proto 文件
- moduleName: string, 模块名称
返回值:
- []*PbService, 解析后的所有服务对象
type RPCMethod ¶
type RPCMethod struct { Name string // 方法名称,例如 SayHello Num int // 一个 RPC 方法可以对应多个 HTTP 请求 Request string // 请求消息类型,例如 SayHelloReq Reply string // 响应消息类型,例如 SayHelloResp InvokeType int // 调用类型: 0-单次调用, 1-客户端流式, 2-服务端流式, 3-双向流式 // HTTP 规则相关信息 Path string // 请求路径 Method string // HTTP 方法 Body string ResponseBody string CustomKind string Selector string // 如果 Selector 是 [ctx], 则 IsPassGinContext 为 true // 如果 Selector 是 [no_bind], 则 IsPassGinContext 和 IsIgnoreShouldBind 都为 true IsPassGinContext bool // 如果 Selector 是 [no_bind], 则忽略 c.ShouldBindXXX,必须在 RPC 方法中手动调用 c.ShouldBindXXX() IsIgnoreShouldBind bool RequestImportPkgName string // 例如空或 userV1 ReplyImportPkgName string // 例如空或 userV1 ProtoSelfPkgPath string // 例如 "module/api/user/v1" ImportPkgPaths map[string]struct{} // 排除 ProtoSelfPkgPath }
RPCMethod 描述一个 RPC 方法
func GetMethods ¶
GetMethods 获取 RPC 方法描述 参数:
- m: *protogen.Method, 即当前解析的 RPC 方法
- protoSelfPkgPath: string, 当前 proto 文件的包路径
返回值:
- []*RPCMethod, 包含所有解析出的 HTTP 规则对应的 RPC 方法描述
func (*RPCMethod) HasPathParams ¶
HasPathParams 判断路径是否包含路由参数
func (*RPCMethod) InitPathParams ¶
func (m *RPCMethod) InitPathParams()
InitPathParams 将路径参数转换为 Gin 支持的格式
type ServiceMethod ¶
type ServiceMethod struct { MethodName string // 方法名称,例如 Create Request string // 请求消息类型,例如 CreateRequest RequestFields []*Field Reply string // 响应消息类型,例如 CreateReply ReplyFields []*Field Comment string // 注释,例如 Create a record InvokeType int // 调用类型: 0-单次调用, 1-客户端流式, 2-服务端流式, 3-双向流式 ServiceName string // 服务名称,例如 Greeter LowerServiceName string // 服务名称首字母小写,例如 greeter LowerCutServiceName string // 去掉 Service 后缀的服务名称首字母小写,例如 GreeterService --> greeter // HTTP 规则 Path string // 请求路径 Method string // HTTP 方法 Body string IsPassGinContext bool // 是否传递 gin.Context IsIgnoreShouldBind bool // 是否忽略 ShouldBindXXX RequestImportPkgName string // 请求消息的导入包名称,例如 userV1 ReplyImportPkgName string // 响应消息的导入包名称,例如 userV1 ProtoPkgName string // proto 文件的包名称,例如 userV1 }
ServiceMethod 表示 RPC 方法的字段
Click to show internal directories.
Click to hide internal directories.