過一半,喝杯琴酒休息一下吧!,為什麼選擇Gin?其實不是什麼特別原因,因為我只聽過這個而已,實際查一下也發現相關的表現也都比較好,所以就選擇Gin來學習了。Gin的官方文件在這邊藍色琴酒怪獸佐柳丁
Gin以簡單好理解與高性能在Go的各種框架中脫穎而出,是適合開發高性能RestAPI的框架。Geeksforgeeks上說較適合中小型的應用程式,較不適合開發大型的應用程式後端或大型複雜功能。
圖片來源:https://multiqos.com/blogs/top-golang-web-frameworks-for-development-in-2022/
一款利用Go語言撰寫而成的Web Framework,對性能非常有信心
官方是這樣描述自己的。
Gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.
介紹稍微看看就好,主要還是要知道怎麼使用,開始吧。
使用Go外部套件時都要先下載才行,在終端機輸入以下內容。
go get github.com/gin-gonic/gin
依照Document執行一次,Document將方法用匿名方式寫在main內,我覺得很亂所以拉出來寫ˊˇˋ
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func ping(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"Name": "IT home",
"Language": "Go",
"FrameWork": "Gin",
})
}
func main() {
r := gin.Default()
r.GET("/ping", ping)
r.Run()
}
http
方法做比較,昨天方法中有response
與request
兩種參數,在Gin
框架中只需要Context
就可以了。c.JSON
,對Context
寫入一個JSON
格式的資料。gin.H
是map[string]interface{}
的簡寫,後面存入要輸出的內容,以map格式撰寫。gin.Default()
,建立一個預設的gin實例。這邊就把昨天的例子用Gin框架的方式做一次吧,直接先看完整程式碼。
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
type HtmlData struct {
Title string
Content string
}
func test(c *gin.Context) {
data := HtmlData{"大 大 大優惠", "貓咪大戰爭六周年"}
c.HTML(http.StatusOK, "index.html", data)
}
func main() {
r := gin.Default()
r.LoadHTMLGlob("template/*")
r.GET("/", test)
r.Run(":8888")
}
c.HTML()
接收三個變數,header
、模板網頁、動態資料。Gin
框架中可直接讀懂html
,不需要再經過template
轉型態。LoadHTMLGlob("template/*")
,註冊template內的html檔案,供其他方法使用。8888 port
來執行。正常執行的話,在http://127.0.0.1:8888/ 就會與上一篇有一樣的畫面了,大成功owo
之前在用Django
時都沒有去了解背後怎麼寫的,單純看別人怎麼寫就跟著照抄,現在在看Gin
時就覺得好多東西都是新的,比我想的難一些,果然我身為工程師還太淺了,明天的目標是時做一個簡單的計算機。
Gin
https://github.com/gin-gonic/gin
Day5 | Gin - 好用的 web framework
https://ithelp.ithome.com.tw/articles/10234075