Go Web实战-1.HellowWorld - Go语言中文社区

Go Web实战-1.HellowWorld


先从入门例程开始体验一下Gin。

安装Gin

go get github.com/gin-gonic/gin

使用Goland建立工程


接下来需要获取一个Gin实例,还需要给他添加路由,然后就可以启动了。

var startMode = gin.DebugMode
func main() {
   fmt.Println("[Server Starting]...")

   gin.SetMode(startMode)
   
   //注册路由
   router := routers.InitRouter()

   //启动服务器
   router.Run(":8080")

   log.Println("Server stopped")
   //defer models.DbClose()
   os.Exit(0)
}



我们在InitRouter里面创建一个Gin实例,给他添加路由,在返回给main

func InitRouter() *gin.Engine {

   router := gin.Default()
   fmt.Println("[Plugin Router Profile]...")

   //加载中间件
   router.Use(gin.Logger())

   //注册顶级路由
   v1 := router.Group("/api/v1")
   {
      new(HellowController).AddRouter(v1)
   }

   fmt.Println("[Router Inited]...")
   return router

}

这里我们创建了一个路由组/api/v1,因为我们项目后面路由会越来越多,这里我们加了个嵌套,在每个模块里面单独在创建一个分组,并添加路由和Handler。

HellowController里面设置分组/hellow,并添加了两个GET路由 /ping 和  /user/:name,

那么完整的路由就是 /api/v1/hellow/ping 和  /api/v1/hellow/user/:name; 这里的/:name表示path变量。

//注册路由
func (h *HellowController)AddRouter(router *gin.RouterGroup) {

   r := router.Group("/hellow")
   r.GET("/user/:name", h.GetUserHandler)
   r.GET("/ping", h.PingHandler)
}

每个路由需要添加对应的Handler处理函数。

var DB = map[string]string{
   "aa": "222",
   "bb": "444",
}
func (h *HellowController)PingHandler(c *gin.Context) {
   c.String(200, "pong")
}

// Get user value
func (h *HellowController)GetUserHandler(c *gin.Context) {
   user := c.Params.ByName("name")
   value, ok := DB[user]
   if ok {
      c.JSON(200, gin.H{"user": user, "value": value})
   } else {
      c.JSON(200, gin.H{"user": user, "status": "no value"})
   }
}

收到/api/v1/hellow/ping请求时,服务器直接返回一个“pong”字符串。而收到/user时则会用

c.Params.ByName("name")

取出path变量,返回map里面对应的user信息。

启动服务器后会打印出Handler的信息

[GIN-debug] GET    /api/v1/hellow/user/:name --> _/F_/Project/GOproject/WEB/awesomeProject/api/controllers.(*HellowController).GetUserHandler-fm (4 handlers)
[GIN-debug] GET    /api/v1/hellow/ping       --> _/F_/Project/GOproject/WEB/awesomeProject/api/controllers.(*HellowController).PingHandler-fm (4 handlers)
[GIN-debug] Listening and serving HTTP on :8080

访问/api/v1/hellow/ping,会返回pong


访问http://localhost:8080/api/v1/hellow/user/aa,则会返回map里面的"aa"


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/a1137475550/article/details/80056434
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-27 19:45:29
  • 阅读 ( 1213 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢