go的gin和gorm框架实现切换身份的接口

这篇具有很好参考价值的文章主要介绍了go的gin和gorm框架实现切换身份的接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用go的gin和gorm框架实现切换身份的接口,接收前端发送的JSON对象,查询数据库并更新,返回前端信息

接收前端发来的JSON对象,包含由openid和登陆状态组成的一个string和要切换的身份码int型

go的gin和gorm框架实现切换身份的接口,腾讯-智慧养殖-后端组,Goland,golang,gin,开发语言

后端接收后判断要切换的身份是否低于该用户身份,是则更新数据库的登录状态为要切换的身份码,返回由openid和新的登录状态组成的string,否则返回错误码和权限不足的错误信息

测试代码

创建两个结构体,一个用来查询数据库,一个用来接收前端发送的JSON对象

连接数据库,接收前端POST请求,提取数据,查库,处理,返回信息文章来源地址https://www.toymoban.com/news/detail-654129.html

package main

import (
	"github.com/gin-gonic/gin"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"log"
	"net/http"
	"strconv"
)

type User struct {
	Openid     string `json:"openid" gorm:"primaryKey"`
	IdCode     int    `json:"idcode"`
	LoginState int    `json:"login_state"`
}
type RequestData struct {
	OpenidAndLoginStatus string `json:"openidAndLoginState"`
	IdCodeToChange       int    `json:"idcodeToChange"`
}

func main() {
	dsn := "username:password@tcp(host:port)/database?charset=utf8mb4&parseTime=True&loc=Local"
	db, 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/update
	router.POST("/update", func(c *gin.Context) {
		var requestData RequestData
		if err := c.ShouldBindJSON(&requestData); err != nil {
			c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid JSON data"})
			return
		}
		openidAndLoginState := requestData.OpenidAndLoginStatus
		openID := openidAndLoginState[:len(openidAndLoginState)-1]
		loginStatus, _ := strconv.Atoi(openidAndLoginState[len(openidAndLoginState)-1:])
		idCode := requestData.IdCodeToChange
		var user User
		result := 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 = loginStatus
			result = 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
	}
}

到了这里,关于go的gin和gorm框架实现切换身份的接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gin和gorm框架安装

    理论上只要这两句命令 然而却出现了问题 貌似是代理问题,加上一条命令 或者试试这个  可以成功安装 安装gorm的数据库驱动程序

    2024年02月14日
    浏览(45)
  • go gin gorm连接postgres postgis输出geojson

    go gin gorm连接postgres postgis输出geojson         go-gin-gorm         postgres-postgis         go vscode环境安装-智能提示配置         思路就是:采用原生sql实现查询、更新等,采用gorm的raw来执行sql语句         

    2024年02月09日
    浏览(35)
  • gin+gorm增删改查目录框架

    从网上找资料,发现,很多都是直接的结构 路由,后端的controller层,还有model层,都是放在了同一个main.go文件中,如果写项目的话,还得自己去拆文件,拆代码,经过查询和自己总结,下面放一个目录框架 总体目录结构 按照业务流程顺序,解释说明 1、加载自定义封装函数文

    2024年01月19日
    浏览(46)
  • 使用Go-Gin框架实现 OSS 前端直传功能

    在现代 Web 应用中,文件上传是一项常见功能。传统的上传方式通常需要文件经过后端服务器转发到对象存储服务(如阿里云 OSS)。然而,这种方法可能对服务器造成额外的负担,并降低上传效率。本文将探讨如何使用 Go-Gin 框架实现 OSS 前端直传,从而提高效率并减轻服务器

    2024年01月18日
    浏览(54)
  • Go开源世界主流成熟ORM框架gorm实践分享

    @ 目录 概述 定义 核心功能 声明模型与约定 gorm.Model 字段级权限 时间惯例 嵌入结构 字段标签 使用 安装 数据库链接 连接池 CRUD 接口 创建 查询 高级查询 修改 删除 原始SQL 事务 转换 分片 序列化 GORM 官网地址 https://gorm.io/ 最新版本v1.25.1 GORM 官网文档地址 https://gorm.io/docs/ G

    2024年02月05日
    浏览(45)
  • Go(四)gin框架

    1.1、下载和安装gin 下载包:go get github.com/gin-gonic/gin 使用go mod管理包: 1)初始化 Go Modules :go mod init your_module_name,这将创建一个 go.mod 文件,记录你的项目的模块信息和当前依赖关系; 2)复制依赖包到vendor目录 :\\\"go mod vendor\\\" 会将项目的所有包复制到vendor目录中。这包括

    2024年01月25日
    浏览(40)
  • Go-Gin框架

    Gin是一个用Go编写的HTTPweb框架。它是一个类似于martini但拥有更好性能的API框架, 优于httprouter,速度提高了近 40 倍。 点击此处访问Gin官方中文文档。 新建文件main.go,内容如下: 运行后访问: http://localhost:8000/ Gin支持加载HTML模板, 然后根据模板参数进行配置并返回相应的数

    2024年02月20日
    浏览(42)
  • GO学习之 微框架(Gin)

    1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Http) 11、GO学习之 微框架(Gin) 12、GO学习

    2024年02月13日
    浏览(41)
  • Go语言web框架——Gin

    Gin是一个go语言写的Web框架 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求 Request GET /url ,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答Response,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理

    2023年04月14日
    浏览(81)
  • Go -【gin】框架搭建基本使用

    Gin是一个快速的Golang web框架,它使用了httprouter来处理路由和速度,而不是使用内置的Go路由。以下是Gin框架的搭建和使用: 这将从Gin GitHub仓库中安装最新版本的Gin框架。 在搭建一个Gin应用程序之前,让我们了解一下Gin的基本架构: Router :它是Gin应用程序的核心部分,它接

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包