Go - Gin router 基本介紹

這裡針對 Gin routers 進行基本介紹,後續會針對個部分進行探討。

Gin 基本的一個架構如下方代碼:

package main

import "github.com/gin-gonic/gin"

func main() {
	router := gin.Default()
	router.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	router.Run() // listen and serve on 0.0.0.0:8080
}

首先透過 import 載入 gin package

接著,透過 Default middleware 建立一個 Gin Router

gin.Default()

接著可以看到透過 Gin Router 的方法來接收 API

router.GET
router.POST
router.PUT
router.DELETE
router.PATCH
router.HEAD
router.OPTIONS

在 API 接收預設執行的 func 可以看到注入 gin.Context 並且使用預設的 json 方式返回結果

再透過 router.Run() 來啟動 server ,預設監聽 8080 port

Router 接收 API

Router 接收 API 一共有七種 : GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS

定義方式為:

router.方法("路徑", "方法")

Router 接收 URL 參數

gin Router 接收參數方式有兩種,第一種是透過冒號(:),第二種是透過星號(*)

表示取得該位置的值

*表示從該位置往後取得 url 內容

取得參數的方式都是透過 ```context.Param(“參數名稱”)

例如 user/:name/*action CVT2HUGO: ```

	r.GET("/user/:name/*action", func(c *gin.Context) {
		name := c.Param("name")
		action := c.Param("action")
		c.JSON(200, gin.H{
			"message": name,
			"action":  action,
		})
	})

直接透過 curl 可以觀察到回傳值如下

curl -X GET h80/user/adam/testhejklasjkdlfasdf/adsfasdf
{"action":"/testhejklasjkdlfasdf/adsfasdf","message":"adam"}

gin.H

gin.H 是 map[string]interface{} 的縮寫