gin快速入門

1. 介紹

Gin 是一個用 Golang編寫的 高性能的web 框架, 因爲http路由的優化,速度提升了近 40 倍。 Gin的特色就是封裝優雅、API友好。git

Gin的一些特性:github

  • 快速
    基於 Radix 樹的路由,小內存佔用。沒有反射。可預測的 API 性能。
  • 支持中間件
    傳入的 HTTP 請求能夠由一系列中間件和最終操做來處理。 例如:Logger,Authorization,GZIP,最終操做 DB。
  • Crash 處理
    Gin 能夠 catch 一個發生在 HTTP 請求中的 panic 並 recover 它。這樣,你的服務器將始終可用。例如,你能夠向 Sentry 報告這個 panic!
  • JSON 驗證
    Gin 能夠解析並驗證請求的 JSON,例如檢查所需值的存在。
  • 路由組
    更好地組織路由。是否須要受權,不一樣的 API 版本…… 此外,這些組能夠無限制地嵌套而不會下降性能。
  • 錯誤管理
    Gin 提供了一種方便的方法來收集 HTTP 請求期間發生的全部錯誤。最終,中間件能夠將它們寫入日誌文件,數據庫並經過網絡發送。
  • 內置渲染
    Gin 爲 JSON,XML 和 HTML 渲染提供了易於使用的 API。
  • 可擴展性
    新建一箇中間件很是簡單。

2.下載並安裝

  • 首先須要安裝golang的環境(略)
  • 安裝gin
go get -u github.com/gin-gonic/gin

3.簡單的例子

  • 新建main.go文件
package main
// 導入gin包
import "github.com/gin-gonic/gin"

// 入口函數
func main() {
    // 初始化一個http服務對象
    r := gin.Default()
        
    // 設置一個get請求的路由,url爲/hello, 處理函數(或者叫控制器函數)是一個閉包函數。
    r.GET("/hello", func(c *gin.Context) {
        // 經過請求上下文對象Context, 直接往客戶端返回一個json
        c.JSON(200, gin.H{
            "message": "hello world",
        })
    })
    
    r.Run() // 監聽並在 0.0.0.0:8080 上啓動服務
}
  • 訪問localhost:8080/hello
  • 響應
{
    "message": "hello world"
}
  • 自定義訪問的address和port
package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
)

//定義address和port
const (
    address string = "0.0.0.0"
    port int = 80
)

func main() {
    // 初始化一個http服務對象
    r := gin.Default()

    // 設置一個get請求的路由,url爲/hello, 處理函數(或者叫控制器函數)是一個閉包函數。
    r.GET("/hello", func(c *gin.Context) {
        // 經過請求上下文對象Context, 直接往客戶端返回一個json
        c.JSON(200, gin.H{
            "message": "hello world",
        })
    })

    r.Run(fmt.Sprintf("%s:%d", address, port)) // 監聽並在 0.0.0.0:80 上啓動服務
}
  • 訪問localhost/hello
  • 響應
{
    "message": "hello world"
}

4.小結

  1. 使用gin能夠快速的實現一個高性能的http服務。
  2. gin支持中間件,路由組,json校驗,內容渲染,json校驗錯誤管理等特性,擴展性高。
  3. gin不提供orm組件、配置管理等,若是項目中須要進行數據持久化等操做須要引入相關的包,如:gorm,xorm等。
出處 gin從入門到實踐更多精彩文章,請關注個人博客 SOCKSTACK,分享個人工做經驗。
相關文章
相關標籤/搜索