package main
import ( "fmt" "github.com/gin-gonic/gin" "net/http")
func MyMiddleware(c *gin.Context) { fmt.Println("MyMiddleware") c.Next()}func main() { router := gin.Default() router.POST("/upload", func(c *gin.Context) { file, _ := c.FormFile("file")
// 上传文件至指定目录 if err := c.SaveUploadedFile(file, "./upload/"+file.Filename); err != nil { fmt.Println(err) } c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename)) }) router.POST("/upload/multi", func(c *gin.Context) { // Multipart form form, _ := c.MultipartForm() files := form.File["file[]"]
for _, file := range files { if err := c.SaveUploadedFile(file, "./upload/"+file.Filename); err != nil { fmt.Println(err) } } c.String(http.StatusOK, fmt.Sprintf("%d files uploaded!", len(files))) }) //使用自定义的中间件,后面额路由请求都会受到该中间件的限制 router.Use(MyMiddleware) router.GET("/middleware", func(context *gin.Context) {
}) router.Run(":8080")}
我们为什么要使用中间件,中间件有什么作用呢?有的时候我们为了统一拦截请求,会在路由上增加中间件用于限制用户的请求。HTTP 中间件提供一个方便的机制来过滤进入应用程序的 HTTP 请求,例如,认证中间件默认包含了一个中间件来检验用户身份验证,如果用户没有经过身份验证,中间件会将用户导向登录页面,然而,如果用户通过身份验证,中间件将会允许这个请求进一步继续前进。如何自定义中间件?下面就是一个中间件的示例。
func MyMiddleware(c *gin.Context) { fmt.Println("MyMiddleware") c.Next()}