Golang Gin的综合使用教程

145 阅读7分钟

原生应用程序风靡一时,但网页应用程序在可访问性以及跨设备和操作系统方面更有优势。据 《福布斯》报道,安卓和苹果的应用商店中的应用数量都出现了稳步下降。苹果的下降是从2017年开始的。与此同时,安卓的应用商店在2018年3月达到了360万个应用的峰值。虽然有真正的原因,如旧的和不支持的应用程序被删除和较少的发布,但网络和它在浏览器中的存在仍然是许多用户的第一接触点。

Golang可能在帮助塑造和改善未来的网络方面发挥作用,它提供了一种强大、高效和易于使用的编程语言,开发人员可以用它来创建广泛 的基于网络的应用程序 和服务。Golang专注于简单性、稳定性和可靠性,这可能使它成为寻找可靠和高效的项目语言的网络开发人员的热门选择。

虽然Golang是编程语言,但如果没有一个框架来保持一切正常,它是不完整的。Gin是一个用Golang编写的网络框架。使用Gin的主要好处是获得足够的基础设施来启动和运行你的应用程序。

但Gin到底是什么?它是如何工作的?本教程将解释使用Gin的基础知识,如安装、路由、自定义渲染、可重复使用的模板、安装依赖性和使用中间件。

Golang中的Gin是什么?

Golang是由Google创建的一种编程语言。它是一种静态类型的编译语言,其语法类似于C语言。Gin是一个Go网络框架,被设计为易于使用和快速。

Gin是围绕着一个简单的想法建立的:使用reflect可以在没有很多模板代码的情况下编写网络应用。这意味着你的代码将是简洁的,易于阅读的。

Gin有许多功能,使开发更快、更容易。这些功能包括

  • 一个内置的网络服务器
  • 自动路由
  • 一套用于处理请求和响应的工具
  • 用于添加功能的中间件
  • 一个内置的记录器
  • 对模板的支持

开发人员可以以各种方式使用Gin,如开发Web应用、API服务器,甚至命令行工具。

为什么使用Gin?

如果你正在寻找一个快速和轻量级的Web框架,Golang Gin是一个不错的选择。它很容易使用,而且背后有一个伟大的社区。以下是你为什么要使用Golang Gin的一些原因。

  • Gin是快速的。Golang Gin是目前最快的网络框架之一。它建立在强大的Gin gopher库之上,使得它非常快速和高效。
  • Gin是轻量级的。Golang Gin的另一个优点是它非常轻巧,使它成为构建小型和轻型Web应用的理想选择。
  • Gin很容易使用。Golang Gin很容易使用,而且有很好的文档。如果你是网络开发的新手,你会发现开始使用Gin是非常简单的。
  • Golang有一个伟大的社区。Golang Gin背后有一个伟大的社区。许多Gin开发者总是愿意帮助和贡献。
  • Golang和Gin是开源的。Golang Gin是开源的,在MIT许可下发布,所以你可以将其用于任何目的,包括商业项目。

Golang Gin - 一个全面的入门教程

安装Golang Gin

假设你有一个工作中的Go安装,这应该能让你开始运行Gin,创建一个新的项目目录并换到其中。

mkdir myproject cd myproject

下载并安装Gin。

go get github.com/gin-gonic/gin

创建一个包含以下内容的main.go文件。

package main
import "github.com/gin-gonic/gin"
func main() {
    r: = gin.Default()
    r.GET("/tab", func(c * gin.Context) {
        c.JSON(200, gin.H {
            "message": "nine",
        })
    })
    r.Run()
    // listen and serve on 0.0.0.0:8080
}

运行服务器。

go run main.go

现在你应该可以访问服务器了,网址是http://localhost:8080/tab。

用Golang Gin做路由

路由是将一个URL路径与一个处理程序相匹配。在Gin中,路由器将传入的请求匹配到适当的处理程序。路由器被初始化为一个根路径和一个路由数组。每个路由由一个方法、一个路径和一个处理程序组成。处理程序是一个函数,当找到一个匹配时被调用。

传入的请求与路由器中的路由进行匹配。如果找到一个匹配,相应的处理程序被调用。如果没有找到匹配,就 会返回404 Not Found 状态。

Gin还提供了一种对路由进行分组的方法。一个组是共享一个共同根路径的路由的集合。组可以被嵌套以创建更复杂的路由结构。

要创建一个新的路由器,请使用 New() 函数。

router := gin.New()

要向路由器添加路由,请使用路由器的 Handle() 或 HandleFunc() 方法。

router.Handle("GET", "/", homeHandler)
​
router.HandleFunc("POST", "/login", loginHandler)

Handle() 和 HandleFunc()的第一个参数 是HTTP方法。第二个参数是URL路径。第三个参数是处理函数。

处理程序可以是任何类型的函数,但gin提供了一些专门为gin使用而设计的辅助函数。你可以在 gin.HandlerFunc 类型中找到这些辅助函数。

要调用一个处理程序,请使用路由器的 ServeHTTP() 方法。

router.ServeHTTP(w, r)

ServeHTTP() 方法接受一个 http.ResponseWriter 和一个 http.Request 作为参数。它将传入的请求与一个路由相匹配,并调用相应的处理程序。

Gin还提供了一种方法来检索给定处理程序的URL,这对在你的模板中创建链接很有用。 Url() 方法接收一个处理程序并返回该处理程序的URL。

url := router.Url("homeHandler")

在Golang Gin中自定义渲染和创建可重复使用的模板

要在Gin中渲染你自己的HTML模板,你需要首先设置HTMLRender变量以指向你自己的HTMLRender实例。你可以通过向 gin.SetHTMLTemplate() 函数传递一个指向你的自定义HTMLRender实例的指针来做到这一点 。

一旦你设置了HTMLRender变量,你就可以调用 gin.HTML() 函数来渲染你的模板。 HTML() 函数接收两个参数:要渲染的模板名称,以及一个将被传递给模板的数据接口{}。

下面是一个简单的例子。

// main.gopackage main
​
import (
  "github.com/gin-gonic/gin"
)
​
func main() {
  r := gin.Default()
  r.SetHTMLTemplate(myCustomHTMLRender)
  r.GET("/", func(c *gin.Context) {
  c.HTML(200, "index.tmpl", gin.H{
  "title": "Welcome to TabNine",
  })
  })
  r.Run()
}
​
// myCustomHTMLRender.gopackage main
​
import (
  "github.com/gin-gonic/gin"
  "html/template"
)
​
func myCustomHTMLRender() gin.HTMLRender {
  return &MyCustomHTMLRender{
  templates: template.Must(template.ParseFiles(
  "path/to/your/template1.tmpl",
  "path/to/your/template2.tmpl",
  )),
  }
}
​
type MyCustomHTMLRender struct {
  templates *template.Template
}
​
func (r *MyCustomHTMLRender) Instance(name string, data interface{}) gin.HTMLRender {
  instance := &MyCustomHTMLRender{
  templates: r.templates.Clone(),
  }
  instance.templates.ExecuteTemplate(writer, name, data)
  return instance
}

使用Golang Gin的中间件

中间件是一个可以用来修改HTTP请求处理器行为的函数。Gin提供了一种注册中间件的便捷方式。

例如,假设我们想记录所有到我们网络应用的请求。我们可以创建一个中间件函数来做到这一点。

func Logger() gin.HandlerFunc {
    return func(c *gin.Context) {
​
        // Get the client IP address
        clientIP := c.ClientIP()
​
        // Get the current time
        now := time.Now()
​
        // Log the request
        log.Printf("[%s] %s %s %s", now.Format(time.RFC3339), c.Request.Method, c.Request.URL.Path, clientIP)
​
        // Proceed to the next handler
        c.Next()
    }
}

然后,我们可以在Gin中注册该中间件函数。

router := gin.Default()
router.Use(Logger())
router.Run(":8080")

这样就可以了!Gin现在将记录所有的请求到我们的Web应用程序。

在Golang Gin中安装依赖项

在Golang Gin中安装依赖项是非常简单的。你所需要做的就是运行以下命令。

go get github.com/gin-gonic/gin

这将获取Gin框架的最新版本并将其安装到你的 $GOPATH中。

收尾工作

随着对更快、更准确的软件开发的需求不断增长,编码的速度和准确性从未像现在这样重要。Tabnine是一个基于人工智能的自动完成工具,它使用机器学习来不断改进代码完成建议,使其随着时间的推移变得越来越准确。

它还提供了广泛的功能,使其非常快速和易于使用,如即时结果、模糊匹配,以及对50多种编程语言的支持。工作更快、更准确是任何开发人员的目标。如果你想 提高工作效率 和准确度,不妨试试Tabnine!

The postGolang Gin - A Comprehensive Tutorialappeared first onThe Official Tabnine Blog.