Commit 62d5d8479d804ef4041e20c138a612b353b12795
1 parent
729bc257
http服务只用写actionStruct
Showing
5 changed files
with
41 additions
and
26 deletions
Show diff stats
cmd/http.go
| @@ -16,7 +16,7 @@ func main() { | @@ -16,7 +16,7 @@ func main() { | ||
| 16 | signal.Notify(stopChan, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL) | 16 | signal.Notify(stopChan, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL) |
| 17 | 17 | ||
| 18 | web := net.NewHttpServer("v1") | 18 | web := net.NewHttpServer("v1") |
| 19 | - web.BindHandler(&actions.HttpAction{HttpServer: web}) | 19 | + web.BindHandler(&actions.AccountAction{HttpServer: web}) |
| 20 | go func() { | 20 | go func() { |
| 21 | err <- web.Start() | 21 | err <- web.Start() |
| 22 | }() | 22 | }() |
src/actions/HttpAction.go renamed to src/actions/AccountAction.go
| @@ -2,7 +2,6 @@ package actions | @@ -2,7 +2,6 @@ package actions | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "github.com/gin-gonic/gin" | 4 | "github.com/gin-gonic/gin" |
| 5 | - "net/http" | ||
| 6 | "pro2d/conf" | 5 | "pro2d/conf" |
| 7 | "pro2d/protos/pb" | 6 | "pro2d/protos/pb" |
| 8 | "pro2d/src/components/net" | 7 | "pro2d/src/components/net" |
| @@ -10,53 +9,42 @@ import ( | @@ -10,53 +9,42 @@ import ( | ||
| 10 | "pro2d/src/utils" | 9 | "pro2d/src/utils" |
| 11 | ) | 10 | ) |
| 12 | 11 | ||
| 13 | -type HttpAction struct { | 12 | +type AccountAction struct { |
| 14 | HttpServer *net.HttpServer | 13 | HttpServer *net.HttpServer |
| 15 | } | 14 | } |
| 16 | 15 | ||
| 17 | - | ||
| 18 | -func PubRsp(c *gin.Context, code int, data interface{}) { | ||
| 19 | - c.JSON(http.StatusOK, gin.H{"code": code, "data": data}) | ||
| 20 | -} | ||
| 21 | - | ||
| 22 | -func (h *HttpAction) Register(c *gin.Context) { | 16 | +func (h *AccountAction) Register(c *gin.Context) (int, interface{}){ |
| 23 | var register pb.Register | 17 | var register pb.Register |
| 24 | if err := c.ShouldBindJSON(®ister); err != nil { | 18 | if err := c.ShouldBindJSON(®ister); err != nil { |
| 25 | - PubRsp(c, -1, err.Error()) | ||
| 26 | - return | 19 | + return -1, err.Error() |
| 27 | } | 20 | } |
| 28 | 21 | ||
| 29 | account := models.NewAccount(register.Phone) | 22 | account := models.NewAccount(register.Phone) |
| 30 | if err := account.Load(); err == nil { | 23 | if err := account.Load(); err == nil { |
| 31 | - PubRsp(c, -2, "account exist: " + register.Phone) | ||
| 32 | - return | 24 | + return -2 , "account exist: " + register.Phone |
| 33 | } | 25 | } |
| 34 | 26 | ||
| 35 | account.Uid = conf.SnowFlack.NextValStr() | 27 | account.Uid = conf.SnowFlack.NextValStr() |
| 36 | account.Password = utils.Md5V(register.Password) | 28 | account.Password = utils.Md5V(register.Password) |
| 37 | if _, err := account.Create(); err != nil{ | 29 | if _, err := account.Create(); err != nil{ |
| 38 | - PubRsp(c, -3, "account register err: " + err.Error()) | ||
| 39 | - return | 30 | + return -3, "account register err: " + err.Error() |
| 40 | } | 31 | } |
| 41 | account.Password = register.Password | 32 | account.Password = register.Password |
| 42 | - PubRsp(c, 0, account.Account) | 33 | + return 0, account.Account |
| 43 | } | 34 | } |
| 44 | 35 | ||
| 45 | -func (h *HttpAction) Login(c *gin.Context) { | 36 | +func (h *AccountAction) Login(c *gin.Context) (int,interface{}) { |
| 46 | var login pb.Account | 37 | var login pb.Account |
| 47 | if err := c.ShouldBindJSON(&login); err != nil { | 38 | if err := c.ShouldBindJSON(&login); err != nil { |
| 48 | - PubRsp(c, -1, err.Error()) | ||
| 49 | - return | 39 | + return -1, err.Error() |
| 50 | } | 40 | } |
| 51 | account := models.NewAccount(login.Phone) | 41 | account := models.NewAccount(login.Phone) |
| 52 | if err := account.Load(); err != nil { | 42 | if err := account.Load(); err != nil { |
| 53 | - PubRsp(c, -2, err.Error()) | ||
| 54 | - return | 43 | + return -2, err.Error() |
| 55 | } | 44 | } |
| 56 | 45 | ||
| 57 | if utils.Md5V(login.Password) != account.Password { | 46 | if utils.Md5V(login.Password) != account.Password { |
| 58 | - PubRsp(c, -3, "password error") | ||
| 59 | - return | 47 | + return -3, "password error" |
| 60 | } | 48 | } |
| 61 | 49 | ||
| 62 | var gs []*pb.ServiceInfo | 50 | var gs []*pb.ServiceInfo |
| @@ -71,5 +59,5 @@ func (h *HttpAction) Login(c *gin.Context) { | @@ -71,5 +59,5 @@ func (h *HttpAction) Login(c *gin.Context) { | ||
| 71 | Uid: account.Uid, | 59 | Uid: account.Uid, |
| 72 | GameService: gs, | 60 | GameService: gs, |
| 73 | } | 61 | } |
| 74 | - PubRsp(c, 0, rsp) | 62 | + return 0, rsp |
| 75 | } | 63 | } |
src/components/net/http.go
| @@ -3,6 +3,7 @@ package net | @@ -3,6 +3,7 @@ package net | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | "github.com/gin-gonic/gin" | 5 | "github.com/gin-gonic/gin" |
| 6 | + "net/http" | ||
| 6 | "pro2d/conf" | 7 | "pro2d/conf" |
| 7 | "pro2d/src/components/db" | 8 | "pro2d/src/components/db" |
| 8 | "pro2d/src/components/etcd" | 9 | "pro2d/src/components/etcd" |
| @@ -32,7 +33,11 @@ func NewHttpServer(version string, port ...string) *HttpServer { | @@ -32,7 +33,11 @@ func NewHttpServer(version string, port ...string) *HttpServer { | ||
| 32 | func (h *HttpServer)HandlerFuncObj(tvl, obj reflect.Value) gin.HandlerFunc { | 33 | func (h *HttpServer)HandlerFuncObj(tvl, obj reflect.Value) gin.HandlerFunc { |
| 33 | return func(c *gin.Context) { | 34 | return func(c *gin.Context) { |
| 34 | v := tvl.Call([]reflect.Value{obj, reflect.ValueOf(c)}) | 35 | v := tvl.Call([]reflect.Value{obj, reflect.ValueOf(c)}) |
| 35 | - fmt.Printf("v : %v\n", v) | 36 | + if len(v) != 2 { |
| 37 | + c.JSON(http.StatusNotFound, gin.H{"code": -100, "data": ""}) | ||
| 38 | + return | ||
| 39 | + } | ||
| 40 | + c.JSON(http.StatusOK, gin.H{"code": v[0].Interface(), "data": v[1].Interface()}) | ||
| 36 | } | 41 | } |
| 37 | } | 42 | } |
| 38 | 43 |
| @@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
| 1 | +package net | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/gin-gonic/gin" | ||
| 5 | + "testing" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type HttpAction struct { | ||
| 9 | +} | ||
| 10 | + | ||
| 11 | +func (h *HttpAction) PrintA(c *gin.Context) (int, interface{}) { | ||
| 12 | + return 0, "I'm A" | ||
| 13 | +} | ||
| 14 | +func (h *HttpAction) PrintB(c *gin.Context) (int, interface{}) { | ||
| 15 | + return 0, "I'm B" | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +func TestHttpServer_Start(t *testing.T) { | ||
| 19 | + web := NewHttpServer("v1") | ||
| 20 | + web.BindHandler(&HttpAction{}) | ||
| 21 | + web.Start() | ||
| 22 | +} | ||
| 0 | \ No newline at end of file | 23 | \ No newline at end of file |