系列 Gin 框架 安裝和路由配置

2022-05-17 08:49:08 字數 4526 閱讀 1361

目錄看下 gin 框架的官方介紹:

gin 是乙個用 go (golang) 編寫的 web 框架。 它是乙個類似於 martini 但擁有更好效能的 api 框架, 由於 httprouter,速度提高了近 40 倍。 如果你是效能和高效的追求者, 你會愛上 gin。

是的,就是用 gin 來寫 api 介面。

這篇文章分享 gin 的安裝和gin 的路由配置。

路由配置包含的功能點如下:

必須要先安裝 go,go 的安裝可以參考:go - 環境安裝。

我在安裝時,用的是 dep 安裝,給大家分享下。

dep 是啥 ?

它是 golang 官方依賴管理工具,可以認為它與 php 中的 composer 類似。

在這就不多做介紹了,可以自己去了解,安裝也比較簡單。

我本機是 mac,安裝只需乙個命令:

brew install dep
咱們接下來建立乙個新專案:gindemo。

在 gindemo 目錄下執行:

dep init
執行完畢,會生成如下三個檔案:

├─ gindemo

│ ├─ vendor

│ ├─ gopkg.toml

│ ├─ gopkg.lock

需要的依賴配置寫在gopkg.toml檔案。

gopkg.lock暫時可以不用管。

gopkg.toml檔案中增加依賴:

新增乙個 main.go 檔案:

// 官方 demo

}

gindemo 目錄下執行:

dep ensure
執行完畢,vendor目錄會存在安裝包,這時整體目錄結構如下:

├─ gindemo

│ ├─ vendor

│ ├── github.com

│ ├── ...

│ ├── golang.org

│ ├── ...

│ ├── gopkg.in

│ ├── ...

│ ├─ gopkg.toml

│ ├─ gopkg.lock

│ ├─ main.go

gindemo 目錄下執行:

go run main.go
瀏覽器訪問:http://localhost:8080/ping大功告成!

假設需求是這樣的,介面支援多種請求方式,v1 不需簽名驗證,v2 需要簽名驗證,路由檔案應該這樣寫:

// v2 版本

groupv2 := r.group("/v2", common.verifysign) }

func signdemo(c *gin.context) {}

params := url.values,

"price" : string,

"ts" : string,

} res["sn"] = common.createsign(params)

res["ts"] = ts

common.retjson("200", "", res, c)

}.any表示支援多種請求方式。

controller/v1表示 v1 版本的檔案。

controller/v2表示 v2 版本的檔案。

signdemo表示生成簽名的demo。

接下來,給出一些**片段:

驗證簽名方法:

// 驗證簽名

func verifysign(c *gin.context) else if method == "post" else

exp, _ := strconv.parseint(config.api_expiry, 10, 64)

// 驗證過期時間

if ts > gettimeunix() || gettimeunix() - ts >= exp

// 驗證簽名

if sn == "" || sn != createsign(req)

}

生成簽名的方法:

// 生成簽名

func createsign(params url.values) string

} sort.strings(key)

for i := 0; i < len(key); i++ else

} // 自定義簽名演算法

return sign

}

獲取引數的方法:

// 獲取 get 引數

name := c.query("name")

price := c.defaultquery("price", "100")

// 獲取 post 引數

name := c.postform("name")

price := c.defaultpostform("price", "100")

// 獲取 get 所有引數

reqget = c.request.url.query()

//獲取 post 所有引數

reqpost = c.request.postform

v1 業務**:

}v2 業務**:

}接下來,直接看效果吧。

訪問 v1 介面:

訪問後,直接返回資料,不走簽名驗證。

訪問 v2 介面:

進入了這段驗證:

// 驗證過期時間

if ts > gettimeunix() || gettimeunix() - ts >= exp

修改為合法的時間戳後:

進入了這段驗證:

// 驗證簽名

if sn == "" || sn != createsign(req)

修改為合法的簽名後:

至此,簡單的路由配置已經實現了。

對了,還有乙個點沒說,就是如何讀取配置檔案中的配置,我是這樣做的:

package config

const (

port = ":8080"

api_expiry = "120"

)

引入 config 包,直接config.xx即可。

gin 框架

基礎篇

Gin框架二 Gin基本路由 1

目錄 基本路由 路由引數 路徑全部引數 路徑單個引數 獲取url中指定的引數 get post請求 獲取url預設值的引數 get post請求 路由是自定義url位址執行指定的函式,良好的路由定義可以對seo起到很好的效果。gin框架封裝了http庫,提供了get post put delete ...

gin系列 路由及路由組

路由及路由組 建立某個資訊 r.post index func c gin.context 更新某個資訊 r.put index func c gin.context 刪除某個資訊 r.delete index func c gin.context 處理所有的請求方法 沒有路由的頁面 為沒有配置處理...

Gin框架系列01 極速上手

gin是go語言編寫的web框架,具備中介軟體 崩潰處理 json驗證 內建渲染等多種功能。沒有安裝配置go語言環境的同學請先自行安裝,這裡不再贅述。首先,我們來建立工作目錄gin。mkdir gin cd gin然後用go mod命令初始化專案,go mod是go語言的包管理工具,官方推薦使用,有...