## 1. 介紹
Gin 是一個用 Golang編寫的 高性能的web 框架, 由于http路由的優化,速度提高了近 40 倍。 Gin的特點就是封裝優雅、API友好。
Gin的一些特性:
- 快速
基于 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
go get -u github.com/gin-gonic/gin
```
## 3.簡單的例子
- 新建main.go文件
```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
- 響應
```json
{
"message": "hello world"
}
```
- 自定義訪問的address和port
```go
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
- 響應
```json
{
"message": "hello world"
}
```
## 4.小結
1. 使用gin可以快速的實現一個高性能的http服務。
2. gin支持中間件,路由組,json校驗,內容渲染,json校驗錯誤管理等特性,擴展性高。
3. gin不提供orm組件、配置管理等,如果項目中需要進行數據持久化等操作需要引入相關的包,如:gorm,xorm等。
> 更多內容請關注我的博客[SOCKSTACk](https://www.sockstack.cn)