前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020最新Gin框架中文文档 asong又捡起来了英语,用心翻译

2020最新Gin框架中文文档 asong又捡起来了英语,用心翻译

作者头像
Golang梦工厂
发布2022-07-07 15:41:36
1K0
发布2022-07-07 15:41:36
举报
文章被收录于专栏:跟着asong学Golang跟着asong学Golang

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:
代码语言:javascript
复制
$ go get -u github.com/gin-gonic/gin
  1. 在你的代码中导入Gin包:
代码语言:javascript
复制
import "github.com/gin-gonic/gin"
  1. (可选)如果使用诸如http.StatusOK之类的常量,则需要引入net/http包:
代码语言:javascript
复制
import "net/http"

快速开始

代码语言:javascript
复制
# 假设example.go 文件中包含以下代码
$ cat example.go
代码语言:javascript
复制
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")
}
代码语言:javascript
复制
# 运行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

代码语言:javascript
复制
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 端口号
}

路由参数

代码语言:javascript
复制
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")
}

查询字符串参数

代码语言:javascript
复制
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 表单

代码语言:javascript
复制
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开发。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang梦工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Gin Web 框架
  • 安装
  • 快速开始
  • API 例子
    • 使用 GET, POST, PUT, PATCH, DELETE and OPTIONS
      • 路由参数
        • 查询字符串参数
          • Multipart/Urlencoded 表单
          相关产品与服务
          消息队列 TDMQ
          消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档