ginrpc
用于 RPC 风格编码的 Gin 中间件
- 高性能 使用泛型而不是反射,没有性能损失
- 简单且可定制
- 自动绑定参数并验证
- 统一的响应/错误处理
安装
$ go get github.com/apicat/ginrpc
使用
基本方式
使用 ginrpc.Handle
转换你的rpc函数,仅此而已
type In struct {
ID int64 `uri:"id" binding:"required"`
}
type Out struct {
Message string `json:"message"`
}
func rpcHandleDemo(c *gin.Context, in *In) (*Out, error) {
msg := fmt.Sprintf(" myid = %d", in.ID)
return &Out{Message: msg}, nil
}
func main() {
e := gin.Default()
e.POST("/example/:id", ginrpc.Handle(rpcHandleDemo))
}
自定义方式
通过中间件注册配置信息
ReponseRender
自定义响应处理。AutomaticBinding
你可能想自己处理绑定,因此可以禁用默认的自动绑定。默认是启用的RequestBeforeHook
添加一个前置钩子。 比如打印请求参数,或者自定义绑定可以在这里处理
e := gin.Default()
e.Use(ginrpc.AutomaticBinding(false), ginrpc.RequestBeforeHook(customBind))