iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0

前言

上一篇我們介紹了 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,其實你也不需要框架,即可以架設自己的網站,只是框架提供了許多方便性,可以大大的提升開發的速度。希望今天的介紹對你有幫助,謝謝今天的閱讀!


上一篇
Day22-Go net/http
下一篇
Day24-Go Json處理
系列文
golang後端入門分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言