1
2020最新Gin 中文文档(前言)
哈喽,大家好,我是asong。最近在学习Gin框架。在学习的过程中,一直看英文文档,对于英语渣渣的我来说,很痛苦,就想着给他翻译过来,弄成中文文档,可以提高我们的学习下效率。网上翻译过来的文档有很多,不过都很旧了,许多更新也没有处理,不是很完整。所以我就自己一边学英语、一边翻译了这篇中文文档,现在分享给你们,希望对你们有用。
备注:由于文档是我自己翻译,有错误欢迎指出。
文档已上传个人github:https://github.com/sunsong2020/Golang_Dream/tree/master/Gin/Doc
2
2020最新Gin 中文文档
由于文章篇幅限制,这里只能贴部分文档,完整版公众号:Golang梦工厂,后台获取。
目录大纲:
Gin Web 框架
Gin是用Go(Golang)编写的Web框架。他是一个类似于martini但拥有更好性能的API框架,由于httprouter,速度提高了40倍。如果您追求性能和高效的效率,您将会爱上Gin。
安装
在安装Gin包之前,你需要在你的电脑上安装Go环境并设置你的工作区。
- 首先需要安装Go(支持版本1.11+),然后使用以下Go命令安装Gin:
$ go get -u github.com/gin-gonic/gin
- 在你的代码中导入Gin包:
import "github.com/gin-gonic/gin"
http.StatusOKnet/http
import "net/http"
快速开始
# 假设example.go 文件中包含以下代码
$ cat example.go
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 (for windows "localhost:8080")
}
# 运行example.go文件并在浏览器上访问0.0.0.0:8080/ping(windows访问:localhost:8080/ping)
$ go run example.go
API 例子
您可以在Gin示例的仓库中找到许多现成的示例。
使用 GET, POST, PUT, PATCH, DELETE and OPTIONS
func main() {
//使用默认中间件(logger 和 recovery 中间件)创建 gin 路由
router := gin.Default()
router.GET("/someGet", getting)
router.POST("/somePost", posting)
router.PUT("/somePut", putting)
router.DELETE("/someDelete", deleting)
router.PATCH("/somePatch", patching)
router.HEAD("/someHead", head)
router.OPTIONS("/someOptions", options)
// 默认在 8080 端口启动服务,除非定义了一个 PORT 的环境变量。.
router.Run()
// router.Run(":3000") hardcode 端口号
}
路由参数
func main() {
router := gin.Default()
// 这个handler 将会匹配 /user/john 但不会匹配 /user/ 或者 /user
router.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})
// 但是, 这个将匹配 /user/john/ 以及 /user/john/send
// 如果没有其他路由器匹配 /user/john, 它将重定向到 /user/john/
router.GET("/user/:name/*action", func(c *gin.Context) {
name := c.Param("name")
action := c.Param("action")
message := name + " is " + action
c.String(http.StatusOK, message)
})
// 对于每个匹配的请求,上下文将保留路由定义
router.POST("/user/:name/*action", func(c *gin.Context) {
c.FullPath() == "/user/:name/*action" // true
})
router.Run(":8080")
}
查询字符串参数
func main() {
router := gin.Default()
// 查询字符串参数使用现有的底层 request 对象解析
// 请求响应匹配的 URL: /welcome?firstname=Jane&lastname=Doe
router.GET("/welcome", func(c *gin.Context) {
firstname := c.DefaultQuery("firstname", "Guest")
lastname := c.Query("lastname") // 这个是 c.Request.URL.Query().Get("lastname") 快捷写法
c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
})
router.Run(":8080")
}
Multipart/Urlencoded 表单
func main() {
router := gin.Default()
router.POST("/form_post", func(c *gin.Context) {
message := c.PostForm("message")
nick := c.DefaultPostForm("nick", "anonymous")
c.JSON(200, gin.H{
"status": "posted",
"message": message,
"nick": nick,
})
})
router.Run(":8080")
}
3
总结
翻译这篇中文文档,我收获很大,把所有的例子也都自己实现了一遍,对Gin框架的了解有更深了一点。Gin当前是Go语言环境下最受欢迎的WEB框架。推荐你们学习WEB框架直接上手Gin。
最近在忙着毕业的事情,没有怎么更新文章,马上就忙完了,打个预告,下一篇准备更新一篇爬虫文章,敬请期待呦!!!
Asong是一名Golang开发工程师,专注于Golang相关技术:Golang面试、Beego、Gin、Mysql、Linux、网络、操作系统等,致力于Golang开发。