聊城住房和城乡建设部网站,企业网站建设 新闻宣传,防内涵吧网站源码,短视频app开发软件使用go的gin和gorm框架实现切换身份的接口#xff0c;接收前端发送的JSON对象#xff0c;查询数据库并更新#xff0c;返回前端信息
接收前端发来的JSON对象#xff0c;包含由openid和登陆状态组成的一个string和要切换的身份码int型 后端接收后判断要切换的身份是否低于该…使用go的gin和gorm框架实现切换身份的接口接收前端发送的JSON对象查询数据库并更新返回前端信息
接收前端发来的JSON对象包含由openid和登陆状态组成的一个string和要切换的身份码int型 后端接收后判断要切换的身份是否低于该用户身份是则更新数据库的登录状态为要切换的身份码返回由openid和新的登录状态组成的string否则返回错误码和权限不足的错误信息
测试代码
创建两个结构体一个用来查询数据库一个用来接收前端发送的JSON对象
连接数据库接收前端POST请求提取数据查库处理返回信息
package mainimport (github.com/gin-gonic/gingorm.io/driver/mysqlgorm.io/gormlognet/httpstrconv
)type User struct {Openid string json:openid gorm:primaryKeyIdCode int json:idcodeLoginState int json:login_state
}
type RequestData struct {OpenidAndLoginStatus string json:openidAndLoginStateIdCodeToChange int json:idcodeToChange
}func main() {dsn : username:passwordtcp(host:port)/database?charsetutf8mb4parseTimeTruelocLocaldb, err : gorm.Open(mysql.Open(dsn), gorm.Config{})if err ! nil {log.Fatal(err)}err db.AutoMigrate(User{})if err ! nil {log.Fatal(err)}router : gin.Default()// 接口测试地址 192.168.160.128:8080/updaterouter.POST(/update, func(c *gin.Context) {var requestData RequestDataif err : c.ShouldBindJSON(requestData); err ! nil {c.JSON(http.StatusBadRequest, gin.H{error: Invalid JSON data})return}openidAndLoginState : requestData.OpenidAndLoginStatusopenID : openidAndLoginState[:len(openidAndLoginState)-1]loginStatus, _ : strconv.Atoi(openidAndLoginState[len(openidAndLoginState)-1:])idCode : requestData.IdCodeToChangevar user Userresult : db.Where(openid ?, openID).First(user)if result.Error ! nil {c.JSON(http.StatusOK, gin.H{error: Invalid openid})return}if user.IdCode idCode {user.LoginState loginStatusresult db.Save(user)if result.Error ! nil {c.JSON(http.StatusInternalServerError, gin.H{error: Database save error})return}} else {c.JSON(http.StatusOK, gin.H{error: Insufficient privileges})return}response : openID strconv.Itoa(idCode)c.JSON(http.StatusOK, gin.H{response: response})})err router.Run(:8080)if err ! nil {return}
}