Day23-Go Gin

前言

上一篇我们介绍了 Go 的网路操作套件 net/http,那就不能错过 Go 的网页框架(framework)套件 gin,因为要架设一个网站,还是需要考虑到很多情境,例如 request 的资料验证,middleware、response 的格式,这时就很需要框架来做一个辅助。

Gin 优势

而为何使用 gin,Go语言又不是只有一种网页 framework,我们简单看个表格:
https://ithelp.ithome.com.tw/upload/images/20211001/20137500tQvxWaO0XF.png

(图片来源:https://www.mindinventory.com/blog/top-web-frameworks-for-development-golang/)

这里大概整理了一下 gin 的优点:

  • 在 Github 上的 star数最高
  • response 的速度最快
  • CPU 的消耗仅次於 echo
  • 记忆体的表现为最好的

所以大家使用率最高,效能又前几,你能不用吗,你必须说用,不然我没办法往下说了XD!

Gin 安装

今天终於要介绍第三方套件了,gin 是在 github 上的套件,而下载套件的方法不只一种,但今天介绍大家最常用的 go get:

$ go get github.com/gin-gonic/gin

如此一来,即可安装套件到 GOPATH 的目录下,所有的专案都可以使用该套件。

Gin 使用

这里直接带一个范例:

package main
 
import (
   "fmt"
   "net/http"
   "github.com/gin-gonic/gin"
)
 
func main() {
   gin.SetMode(gin.DebugMode)
   apiServer := gin.Default()
   apiServer.GET("/ping", Ping)
   apiServer.GET("/ready", Ready)
   err := apiServer.Run(":8787" )
   if err != nil {
       fmt.Println("health check:", err)
   }
}
 
//Ping health check
func Ready(c *gin.Context) {
   c.JSON(http.StatusOK, gin.H{
       "status": "UP",
   })
}
func Ping(c *gin.Context) {
   c.JSON(http.StatusOK, gin.H{
       "message": "PONG",
   })
}

这是一个很简单的范例,我们写了两个函式 Ready 和 Ping,这是一个很基本的 health check 套路,回传是以 Json 格式为主,若程序正常运行,则打到网页会是回传函式内的内容。在来你要确保 port 是没有其他程序占据的,在运行程序後,你就可以打开自己的浏览器:

https://ithelp.ithome.com.tw/upload/images/20211001/20137500PAythdmmFX.png
https://ithelp.ithome.com.tw/upload/images/20211001/20137500SqAbXbiy5f.png

结果会是呈现这样,如此一来,你就学会使用 gin 框架架设自己的网站了。

结语

今天介绍了 Go 语言的 framwork 套件 gin,其实你也不需要框架,即可以架设自己的网站,只是框架提供了许多方便性,可以大大的提升开发的速度。希望今天的介绍对你有帮助,谢谢今天的阅读!


<<:  JavaScript Day 22. Hoisting

>>:  Day31. Rails 搜寻的强大帮手 - Ransack

Day 26:ELK stack for observation system

今天介绍的这篇,是很明显的天气IoT实例应用,作者将天气Sensor收集来要资料,用Logstash...

【Day26】:从struct进化成class的物件导向技巧(下)

建构子 建构子(constructor)是一种初始化类别物件的成员函式,每一种类别都有一个建构子,当...

Day7收假第一天-无头...苍蝇头

记得在KiKi吃到苍蝇头,让不爱吃韭菜的我也是搭着白饭一口接一口,而且苍蝇头做法简单材料单纯,只要韭...

卡夫卡的藏书阁【Book5】- Kafka 安装与基本设定

“I am a cage, in search of a bird.” ― Franz Kafka...

【Tailwind CSS 教学 - 14】透过 Tailwind 达到容器与内容分离

影片重点 以 Tailwind 来讲解如何达到容器与内容分离 Codepen Demo 示范流程 ...