Gin
Start
package mainimport "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("7171")
}
Route
router.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})router.GET("/hello", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})
api := router.Group("/api"){api.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "GROUP",})})}
router.GET("/value/:id", func(c *gin.Context) {id := c.Param("id")c.JSON(200, gin.H{"message": id,})})
- 路由的命名可能会出现conflict 要去处理
- 路由参数验证
type Login struct {User string `form:"user" json:"user" xml:"user" binding:"required"`Password string `form:"password" json:"password" xml:"password" binding:"required"`
}var json Loginif err := c.ShouldBindJSON(&json); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}
c.Bind(&b)
c.ShouldBindJSON(&json)
id := c.Query("id")
page := c.DefaultQuery("page", "0")
page := c.DefaultPostForm("page", "0")
name := c.PostForm("name")
message := c.PostForm("message")
返回格式
JSON
c.JSON(http.StatusOK,MSG)
c.PureJSON(200,gin.H{})
PROTOBUF
router.GET("/protobuf", func(c *gin.Context) {user := proto.Teacher{Name: "sun",Courses: []string{"go", "java"},}c.ProtoBuf(200, &user)})
中间件
func Logger() gin.HandlerFunc {return func(c *gin.Context) {t := time.Now()c.Set("example", "12345")c.Next()latency := time.Since(t)log.Print(latency)status := c.Writer.Status()log.Println(status)}
}