[Go 05] 使用 Gin 框架快速建立 http 服務

如何用 Gin 框架快速建立 HTTP [ GET/POST 等方法]

效果

用 Postman 工具打看看就可以得到下面結果

SEND [method url ] RESPONSE [status body ]
GET http://localhost:8080/api/v1/user 200 , OK
GET http://localhost:8080/api/v1/user/May 200 ,”Hello,May”
POST http://localhost:8080/api/v1/user
{“name”: “user1”,”age”: 33}
200 , {“name”: “user1”,”age”: 33}

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 1.啟動服務
func StartHttpServer(errChan chan error) {
gin.SetMode(gin.ReleaseMode)
engine := gin.New()
initRoutes(engine)
go func() { errChan <- engine.Run(:8080) }()
}

// 2.設定路由組
func initRoutes(e *gin.Engine) {
root := e.Group("api/v1")
userGroup := root.Group("user")
{
userGroup.GET("", apis.User)
userGroup.GET(":name", apis.UserName)
userGroup.POST("", apis.PostName)
}
}

// 3. 設定回覆
func User(c *gin.Context) {
c.JSON(http.StatusOK, "OK") //回覆status 200 & body "OK"
}
//接受path參數
name := c.Param("name")
c.JSON(http.StatusOK, fmt.Sprintf("%s,%s", "Hello", name))
}

//接收 json 內容
func PostName(c *gin.Context) {
sc := &structs.User{}
if err := c.ShouldBindJSON(sc); err != nil {
return
}
c.JSON(http.StatusOK, sc)
}
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}

Gin 延伸

  • 寫中間件 [控制每個 Url timeout/log 等等行為]
  • 套 swagger [下一篇]
  • gin.Context 還有 c.Header, c.Query, c.GetRawData() 等等使用方法,取參數非常方便

第一次去套用 Gin 真的覺得很神奇,本章純快速記錄效果,

[Go 05] 使用 Gin 框架快速建立 http 服務

https://minilabmemo.github.io/2020/05/08/04-go-gin-http/

作者

Mini Lab Memo

發表於

2020-05-08

更新於

2023-01-22

許可協議

評論