日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gin框架01--快速入门gin框架

發(fā)布時(shí)間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gin框架01--快速入门gin框架 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

gin框架01--快速入門gin框架

  • 介紹
  • 基礎(chǔ)案例
  • 注意事項(xiàng)
  • 說明

介紹

Gin 是一個(gè)用 Go (Golang) 編寫的 web 框架。 它是一個(gè)類似于 martini 但擁有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者, 你會(huì)愛上 Gin.

特性:
快速
基于 Radix 樹的路由,小內(nèi)存占用。沒有反射??深A(yù)測(cè)的 API 性能。
支持中間件
傳入的 HTTP 請(qǐng)求可以由一系列中間件和最終操作來處理。 例如:Logger,Authorization,GZIP,最終操作 DB。
Crash 處理
Gin 可以 catch 一個(gè)發(fā)生在 HTTP 請(qǐng)求中的 panic 并 recover 它。這樣,你的服務(wù)器將始終可用。例如,你可以向 Sentry 報(bào)告這個(gè) panic!
JSON 驗(yàn)證
Gin 可以解析并驗(yàn)證請(qǐng)求的 JSON,例如檢查所需值的存在。
路由組
更好地組織路由。是否需要授權(quán),不同的 API 版本…… 此外,這些組可以無限制地嵌套而不會(huì)降低性能。
錯(cuò)誤管理
Gin 提供了一種方便的方法來收集 HTTP 請(qǐng)求期間發(fā)生的所有錯(cuò)誤。最終,中間件可以將它們寫入日志文件,數(shù)據(jù)庫并通過網(wǎng)絡(luò)發(fā)送。
內(nèi)置渲染
Gin 為 JSON,XML 和 HTML 渲染提供了易于使用的 API。
可擴(kuò)展性
新建一個(gè)中間件非常簡(jiǎn)單,去查看示例代碼吧。

基礎(chǔ)案例

1 下載安裝

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

2 案例1

package mainimport ("net/http""github.com/gin-gonic/gin" )var db = make(map[string]string)func setupRouter() *gin.Engine {// Disable Console Color// gin.DisableConsoleColor()r := gin.Default()// Ping testr.GET("/ping", func(c *gin.Context) {c.String(http.StatusOK, "pong")})// Get user valuer.GET("/user/:name", func(c *gin.Context) {user := c.Params.ByName("name")value, ok := db[user]if ok {c.JSON(http.StatusOK, gin.H{"user": user, "value": value})} else {c.JSON(http.StatusOK, gin.H{"user": user, "status": "no value"})}})// Authorized group (uses gin.BasicAuth() middleware)// Same than:// authorized := r.Group("/")// authorized.Use(gin.BasicAuth(gin.Credentials{// "foo": "bar",// "manu": "123",//}))authorized := r.Group("/", gin.BasicAuth(gin.Accounts{"foo": "bar", // user:foo password:bar"manu": "123", // user:manu password:123}))/* example curl for /admin with basicauth headerZm9vOmJhcg== is base64("foo:bar")curl -X POST \http://localhost:8080/admin \-H 'authorization: Basic Zm9vOmJhcg==' \-H 'content-type: application/json' \-d '{"value":"bar"}'*/authorized.POST("admin", func(c *gin.Context) {user := c.MustGet(gin.AuthUserKey).(string)// Parse JSONvar json struct {Value string `json:"value" binding:"required"`}if c.Bind(&json) == nil {db[user] = json.Valuec.JSON(http.StatusOK, gin.H{"status": "ok"})}})return r }func main() {r := setupRouter()// Listen and Server in 0.0.0.0:8080r.Run(":8080") }

測(cè)試

1) http://127.0.0.1:8080/ping 輸出: pong 2)http://127.0.0.1:8080/user/admin {"status": "no value"} 3)# curl -X POST http://localhost:8080/admin -H 'authorization: Basic Zm9vOmJhcg==' -H 'content-type: application/json' -d '{"value":"bar"}' 輸出: {"status":"ok"}

3 案例2

package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run() // 監(jiān)聽并在 0.0.0.0:8080 上啟動(dòng)服務(wù) }

測(cè)試

http://127.0.0.1:8080/ping 輸出: {"message": "pong"}

注意事項(xiàng)

  • Gin 使用 encoding/json 作為默認(rèn)的 json 包,但是你可以在編譯中使用標(biāo)簽將其修改為 jsoniter
  • $ go build -tags=jsoniter .

    說明

    gin官方文檔 gin-gonic.com/zh-cn/docs/introduction/
    golang第三方類庫(json)-jsoniter
    go gin 中文文檔

    總結(jié)

    以上是生活随笔為你收集整理的gin框架01--快速入门gin框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。