1. 路由分组

  1. func main() {
  2. router := gin.Default()
  3. // Simple group: v1
  4. v1 := router.Group("/v1")
  5. {
  6. v1.POST("/login", loginEndpoint)
  7. v1.POST("/submit", submitEndpoint)
  8. v1.POST("/read", readEndpoint)
  9. }
  10. // Simple group: v2
  11. v2 := router.Group("/v2")
  12. {
  13. v2.POST("/login", loginEndpoint)
  14. v2.POST("/submit", submitEndpoint)
  15. v2.POST("/read", readEndpoint)
  16. }
  17. router.Run(":8082")
  18. }

2. 带参数的url

  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "net/http"
  5. )
  6. func main() {
  7. r := gin.Default()
  8. r.GET("/ping", func(c *gin.Context) {
  9. c.JSON(200, gin.H{
  10. "message": "pong",
  11. })
  12. })
  13. r.GET("/user/:name/:action/", func(c *gin.Context) {
  14. name := c.Param("name")
  15. action := c.Param("action")
  16. c.String(http.StatusOK, "%s is %s", name, action)
  17. })
  18. r.GET("/user/:name/*action", func(c *gin.Context) {
  19. name := c.Param("name")
  20. action := c.Param("action")
  21. c.String(http.StatusOK, "%s is %s", name, action)
  22. })
  23. r.Run(":8082")
  24. }

3. 获取路由分组的参数

  1. package main
  2. import "github.com/gin-gonic/gin"
  3. type Person struct {
  4. ID string `uri:"id" binding:"required,uuid"`
  5. Name string `uri:"name" binding:"required"`
  6. }
  7. func main() {
  8. route := gin.Default()
  9. route.GET("/:name/:id", func(c *gin.Context) {
  10. var person Person
  11. if err := c.ShouldBindUri(&person); err != nil {
  12. c.JSON(400, gin.H{"msg": err})
  13. return
  14. }
  15. c.JSON(200, gin.H{"name": person.Name, "uuid": person.ID})
  16. })
  17. route.Run(":8088")
  18. }