// 请求path中存在参数 route.GET("/user/:name", func(c *gin.Context) { // 获取请求path中的参数 name := c.Param("name") for _, user := range users { if user.Username == name { c.JSON(http.StatusOK, user) return } } c.JSON(http.StatusOK, fmt.Errorf("not found user [%s]", name)) })
// 查询参数,如:/user?name=xcbeyond route.GET("/user", func(c *gin.Context) { // 获取中的参数 name := c.Query("name") for _, user := range users { if user.Username == name { c.JSON(http.StatusOK, user) return } } c.JSON(http.StatusOK, "not found user "+name) })
// api分组 api := route.Group("/api") { // v1分组 v1 := api.Group("/v1") { v1.GET("/user/:name", func(c *gin.Context) { name := c.Param("name") for _, user := range users { if user.Username == name { c.JSON(http.StatusOK, user) return } } c.JSON(http.StatusOK, "not found user :"+name) }) }
// v2分组 v2 := api.Group("/v2") { v2.GET("/user/:name", func(c *gin.Context) { name := c.Param("name") for _, user := range users { if user.Username == name { c.JSON(http.StatusOK, user) return } }
// 如果没有查到,则随机返回一个 user := users[rand.Intn(len(users)-1)] c.JSON(http.StatusOK, "not found user ["+name+"],but user ["+user.Username+"] is exist!") }) } }
// handler funcquerUserHandler(c *gin.Context) { name := c.Param("name") for _, user := range users { if user.Username == name { c.JSON(http.StatusOK, user) return } } c.JSON(http.StatusOK, "not found user :"+name) }
并在 main.go 中调用路由配置函数 SetupRouter 即可:
1 2 3 4 5 6
funcmain() { route := routes.SetupRouter() if err := route.Run(); err != nil { fmt.Printf("startup server failed,err: %v", err) } }