Gin框架系列01:極速上手
阿新 • • 發佈:2020-04-06
## Gin是什麼?
Gin是Go語言編寫的web框架,具備中介軟體、崩潰處理、JSON驗證、內建渲染等多種功能。
## 準備工作
本系列演示所有程式碼都在Github中,感興趣的同學可以自行查閱,歡迎大家一起完善。
```shell
https://github.com/pingyeaa/golang-examples/tree/master/gin
```
沒有安裝配置Go語言環境的同學請先自行安裝,這裡不再贅述。首先,我們來建立工作目錄`gin`。
```shell
mkdir gin && cd gin
```
然後用`go mod`命令初始化專案,`go mod`是Go語言的包管理工具,官方推薦使用,有了它就不再受GOPATH的限制,可以在任何目錄初始化專案。
```shell
go mod init gin
```
接下來安裝`gin`庫。
```shell
go get -u github.com/gin-gonic/gin
```
建立演示程式碼的入口檔案`main.go`,當前專案結構大致如下。
```shell
.
├── go.mod
├── go.sum
└── main.go
```
## 編寫程式碼
工作準備就緒之後,來開始今天的程式碼編寫,以經典程式碼`hello word`為例。
### 例項化一個gin物件
```go
r := gin.Default()
```
Default方法的主要作用是例項化一個帶有日誌、故障恢復中介軟體的引擎。
```go
func Default() *Engine {
debugPrintWARNINGDefault()
engine := New()
engine.Use(Logger(), Recovery())
return engine
}
```
### 定義請求
定義一個GET請求的路由,引數一是路由地址,也就是在瀏覽器訪問的相對路徑,引數二是一個匿名函式,函式內部用於業務邏輯處理。
```go
r.GET("/hello", func(c *gin.Context) {
})
```
我們就在函式內呼叫JSON方法返回資料。JSON的操作非常簡單,引數一是狀態碼,引數二是JSON的內容。
```go
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "Hello world!",
})
})
```
JSON內容可以通過gin提供的H方法來構建,非常方便。
```go
// H is a shortcut for map[string]interface{}
type H map[string]interface{}
```
### 執行
Run方法最終會呼叫內建`http`庫的`ListenAndServe`方法來監聽埠,如果不傳引數預設監聽80埠,也可以通過引數來變更地址和埠。
```go
r.Run(":8081")
```
### 測試
在瀏覽器訪問`localhost:8081`,如果看到如下提示即成功。
![file](https://img2020.cnblogs.com/other/1471773/202004/1471773-20200406175746824-1822938347.jpg)
### 完整程式碼
```go
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "Hello world!",
})
})
r.Run(":8081")
}
```
---
Go語言庫程式碼示例,歡迎star
https://github.com/pingyeaa/golang-examples
---
感謝大家的觀看,如果覺得文章對你有所幫助,歡迎關注公眾號「平也」,聚焦Go語言與技術原理。
![關注我](https://img2020.cnblogs.com/other/1471773/202004/1471773-20200406175747590-1585320