解决跨域

// 使用gin解决跨域问题
func CORSMiddleware() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		ctx.Writer.Header().Set("Access-Control-Allow-Origin", "http://localhost:8080") //允许访问的域名 *表示所有的都可以访问
		ctx.Writer.Header().Set("Access-Control-Max-Age", "86400")                      //缓存时间
		ctx.Writer.Header().Set("Access-Control-Allow-Methods", "*")                    //可以通过访问的方法 get post ...  *表示允许所有方法
		ctx.Writer.Header().Set("Access-Control-Allow-Headers", "*")                    //允许请求带的header头信息
		ctx.Writer.Header().Set("Access-Control-Allow-Credentials", "true")

		if ctx.Request.Method == http.MethodOptions {
			ctx.AbortWithStatus(200)
		} else {
			ctx.Next()
		}
	}
}

在route中使用

func CollectRoute(r *gin.Engine) *gin.Engine {
	r.Use(middleware.CORSMiddleware())
	r.POST("/api/auth/register", controller.Register)                     //注册
	r.POST("/api/auth/login", controller.Login)                           //登录
	r.GET("/api/auth/info", middleware.AuthMiddleware(), controller.Info) //用中间件保护我们用户信息结构 用户信息
	return r
}

接受json数据的三种方法

//使用map获取请求参数
	var requestMap = make(map[string]string)
	json.NewDecoder(ctx.Request.Body).Decode(&requestMap)



//使用结构体承接body参数
	var requestUser = model.User{}
	json.NewDecoder(ctx.Request.Body).Decode(&requestUser)


//gin框架提供的绑定参数
	var requestUser = model.User{}
	ctx.Bind(&requestUser)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐