iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Software Development

你知道Go是什麼嗎?系列 第 15

Day15 - Gin - Golang

  • 分享至 

  • xImage
  •  

過一半,喝杯琴酒休息一下吧!,為什麼選擇Gin?其實不是什麼特別原因,因為我只聽過這個而已,實際查一下也發現相關的表現也都比較好,所以就選擇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執行一次,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()
}

func ping

  • 與昨天的http方法做比較,昨天方法中有responserequest兩種參數,在Gin框架中只需要Context就可以了。
  • c.JSON,對Context寫入一個JSON格式的資料。
  • gin.Hmap[string]interface{}的簡寫,後面存入要輸出的內容,以map格式撰寫。

main func

  • gin.Default(),建立一個預設的gin實例。
  • r.GET(),綁定路由與方法,並以GET的方式實作。
  • r.RUN()啟動,可在此輸入要監聽的port,預設是localhost:8080。

昨天的例子

這邊就把昨天的例子用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")
}

test func

  • c.HTML()接收三個變數,header、模板網頁、動態資料。
  • Gin框架中可直接讀懂html,不需要再經過template轉型態。

main func

  • 使用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


上一篇
Day14-Web-Golang
下一篇
Day16 - Gin實做計算機 - Golang
系列文
你知道Go是什麼嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言