gin自动参数绑定工具,rpc支持

https://gocn.vip/article/1819

golang gin 参数自动绑定工具

  • 基于 go-gin 的 json restful 风格的golang基础库
  • 自带请求参数过滤及绑定实现
  • 代码注册简单且支持多种注册方式

1、 目录结构说明

  • ginrpc/base/common.go 基础库
  • ginrpc/base/api/context.go 自定义context内容
  • 支持参数自动检测 binding:”required”… validator
  • 支持rpc自动映射

2、api接口说明

支持3种接口模式

  • func(*gin.Context) //gogin 原始接口
  • func(*api.Context) //自定义的context类型
  • func(_api.Context,req) //自定义的context类型,带request 请求参数 func(_gin.Context,*req) …… 等接口模式

示例代码

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/gin-gonic/gin"
  6. "github.com/xxjwxc/ginrpc/base"
  7. "github.com/xxjwxc/ginrpc/base/api"
  8. )
  9. type ReqTest struct {
  10. Access_token string `json:"access_token"` //access_token
  11. UserName string `json:"user_name" binding:"required"` //用户名
  12. Password string `json:"password"` //新密码
  13. }
  14. //TestFun1 gin 默认的函数回调地址
  15. func TestFun1(c *gin.Context) {
  16. fmt.Println(c.Params)
  17. c.String(200, "ok")
  18. }
  19. //TestFun2 自定义context的函数回调地址
  20. func TestFun2(c *api.Context) {
  21. fmt.Println(c.Params)
  22. c.JSON(http.StatusOK, "ok")
  23. }
  24. //TestFun3 带自定义context跟已解析的req参数回调方式
  25. func TestFun3(c *api.Context, req *ReqTest) {
  26. fmt.Println(c.Params)
  27. fmt.Println(req)
  28. c.JSON(http.StatusOK, "ok")
  29. }
  30. //TestFun3 带自定义context跟已解析的req参数回调方式
  31. func TestFun4(c *gin.Context, req ReqTest) {
  32. fmt.Println(c.Params)
  33. fmt.Println(req)
  34. c.JSON(http.StatusOK, req)
  35. }
  36. func main() {
  37. router := gin.Default()
  38. router.POST("/test1", base.GetHandlerFunc(TestFun1))
  39. router.POST("/test2", base.GetHandlerFunc(TestFun2))
  40. router.POST("/test3", base.GetHandlerFunc(TestFun3))
  41. router.POST("/test4", base.GetHandlerFunc(TestFun4))
  42. router.Run(":8080")
  43. }

curl

  1. curl 'http://127.0.0.1:8080/test4' -H 'Content-Type: application/json' -d '{"access_token":"111", "user_name":"222", "password":"333"}'

传送门 传送门

如果你喜欢,请’star’

2019-06-22

ft_authoradmin  ft_create_time2019-07-02 23:26
 ft_update_time2019-07-02 23:26