Golang已经是一个很丰富的语言了,包含很多的工具和库。因为作者经常做Http开发工作,所以先来探索gin库。
熟悉使用
第一步:安装
$ go get github.com/gin-gonic/gin
第二步:引用
import "github.com/gin-gonic/gin"
第三步:代码
func main() {
// Disable Console Color
// gin.DisableConsoleColor()
// Creates a gin router with default middleware:
// logger and recovery (crash-free) middleware
router := gin.Default()
router.GET("/someGet", getting)
router.POST("/somePost", posting)
router.PUT("/somePut", putting)
router.DELETE("/someDelete", deleting)
router.PATCH("/somePatch", patching)
router.HEAD("/someHead", head)
router.OPTIONS("/someOptions", options)
// By default it serves on :8080 unless a
// PORT environment variable was defined.
router.Run()
// router.Run(":3000") for a hard coded port
}
使用说明
参数的利用
假设c *.gin.Context,那么:
1、获取路由参数是c.Param("name"),例如
r.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})
2、获取http的querystring,使用c.Query("name"),例如:
r.GET("/welcome", func(c *gin.Context) {
firstname := c.DefaultQuery("firstname", "Guest")
lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")
c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
})
3、获取post过来的参数,使用c.PostForm("name")
接口版本分组
1、版本是更新换代的一个保证
router := gin.Default()
// Simple group: v1
v1 := router.Group("/v1")
{
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
// Simple group: v2
v2 := router.Group("/v2")
{
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
v2.POST("/read", readEndpoint)
}
中间件
无论前后端开发基本都涉及中间件middleware。不过路由基本也是一个middleware,作者把其他middleware都作为路由的一部分了。
r := gin.New()是不包含middleware的,而gin.Default是包含logger和recovery中间件的。
待续。。。
有疑问加站长微信联系(非本文作者)