gin框架用户简单增删改查写(不加数据库 自己写了几个数据 模拟数据库 字段有 id name和password )的时候拦截器应该写那些内容 代码展示
时间: 2024-03-12 21:47:27 浏览: 59
ssm框架增删改查、分页查询、验证登录、登陆拦截
好的,以下是一个简单的示例代码,实现了对用户的增删改查操作,并使用了拦截器对请求进行鉴权和日志记录:
```go
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
// 模拟数据库数据
var users = []map[string]string{
{"id": "1", "name": "张三", "password": "123456"},
{"id": "2", "name": "李四", "password": "123456"},
{"id": "3", "name": "王五", "password": "123456"},
}
func main() {
r := gin.Default()
// 添加拦截器,进行鉴权和日志记录
r.Use(AuthMiddleware(), LoggerMiddleware())
// 获取所有用户
r.GET("/users", func(c *gin.Context) {
c.JSON(http.StatusOK, users)
})
// 获取单个用户
r.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id")
for _, user := range users {
if user["id"] == id {
c.JSON(http.StatusOK, user)
return
}
}
c.JSON(http.StatusNotFound, gin.H{"message": "用户不存在"})
})
// 新增用户
r.POST("/users", func(c *gin.Context) {
var user map[string]string
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
return
}
users = append(users, user)
c.JSON(http.StatusOK, gin.H{"message": "用户添加成功"})
})
// 修改用户
r.PUT("/users/:id", func(c *gin.Context) {
id := c.Param("id")
for i, user := range users {
if user["id"] == id {
var newUser map[string]string
if err := c.ShouldBindJSON(&newUser); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
return
}
users[i] = newUser
c.JSON(http.StatusOK, gin.H{"message": "用户修改成功"})
return
}
}
c.JSON(http.StatusNotFound, gin.H{"message": "用户不存在"})
})
// 删除用户
r.DELETE("/users/:id", func(c *gin.Context) {
id := c.Param("id")
for i, user := range users {
if user["id"] == id {
users = append(users[:i], users[i+1:]...)
c.JSON(http.StatusOK, gin.H{"message": "用户删除成功"})
return
}
}
c.JSON(http.StatusNotFound, gin.H{"message": "用户不存在"})
})
r.Run(":8080")
}
// 鉴权中间件
func AuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// 此处省略鉴权代码
fmt.Println("鉴权通过")
c.Next()
}
}
// 日志记录中间件
func LoggerMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// 记录请求信息
fmt.Printf("请求方法:%s,请求路径:%s\n", c.Request.Method, c.Request.URL.Path)
c.Next()
}
}
```
在上述代码中,我们使用了两个中间件,分别是AuthMiddleware和LoggerMiddleware,分别用于鉴权和日志记录。
在AuthMiddleware中间件中,我们可以根据业务需求进行鉴权,例如检查请求头中的token是否合法,如果不合法可以返回错误信息或者跳转到登录页面。
在LoggerMiddleware中间件中,我们记录了请求的方法和路径,方便后续排查问题或者统计分析。您可以根据需求记录更多的信息,如请求的参数、请求的时间等。
阅读全文