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{} 的縮寫