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环境并设置你的工作区。

  1. 首先需要安装Go(支持版本1.11+),然后使用以下Go命令安装Gin:
$ go get -u github.com/gin-gonic/gin
  1. 在你的代码中导入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开发。