当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > Go Web框架gin的入门教程

Go Web框架gin的入门教程

2018年05月11日  | 移动技术网IT编程  | 我要评论
目前,基于go的web框架也可谓是百花齐放了,之所以选择 gin ,没其他原因,就只是因为其在github上的star数是最多的,而且仅仅从readme看,其文档也是相当丰

目前,基于go的web框架也可谓是百花齐放了,之所以选择 gin ,没其他原因,就只是因为其在github上的star数是最多的,而且仅仅从readme看,其文档也是相当丰富的。

安装gin

直接使用 go get github.com/gin-gonic/gin 即可。

官方readme中提供了非常多的例子。例如最简单的实例代码:

package main
import "github.com/gin-gonic/gin"
func main() {
 r := gin.default()
 r.get("/ping", func(c *gin.context) {
 c.json(200, gin.h{
  "message": "pong",
 })
 })
 r.run() // listen and serve on 0.0.0.0:8080
}

路由

router := gin.default() // 默认是带有logger和recovery中间件的
router := gin.new() // 不带中间件的路由
router.use(gin.logger()) // 可以使用这种方式来指明中间件
router.get("/test", mymiddleware(), testendpoint) // 也可以用这种方式给指定路由添加中间件
router.get("/someget", getting) // 支持所有restful的操作
// 带参数的路由
router.get("/user/:name", func(c *gin.context) {
 name := c.param("name")
})

// 参数可选/通配符功能
router.get("/user/:name/*action", ...)

// 路由分组
v1 := router.group("/v1")
{
  v1.post("/login", loginendpoint)
  v1.post("/submit", submitendpoint)
}
v1.use(authrequired()) {} // 路由分组单独指定中间件

请求与响应

请求

// 获取路由参数,假设有路由为"/user/:name"
c.params.byname("name")

// 获取query参数
c.query("name")
c.defaultquery("name", "guest")

// 获取表单参数
c.postform("name")
c.defaultpostform("name")

参数绑定

请求验证

响应

// 返回简单的字符串
c.string(200, "pong")

// 返回json数据
c.json(200, gin.h{
  "message": "pong",
})

// 重定向
c.redirect(http.statusmovedpermanently, "https://google.com")

中间件

自定义中间件

basicauth中间件

异步协程

gin可以借助协程来实现异步任务,但是这时候得手动copy上下文,并且只能是可读取的。

router.get("/async", func(c *gin.context) {
  ccp := c.copy()
  go func() {
    time.sleep(5 * time.second)
    log.println("done! in path" + ccp.request.url.path)
  }()
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网