gin框架,批量增删改
时间: 2023-08-28 15:03:28 浏览: 45
在 gin 框架中,批量增删改操作可以通过 HTTP POST 请求来实现,请求的 body 中包含操作类型和数据,服务器端根据操作类型执行对应的增删改操作。以下是一个示例代码,实现批量增删改用户的功能:
```go
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
}
var users = []User{
{ID: 1, Name: "Alice", Age: 20},
{ID: 2, Name: "Bob", Age: 25},
{ID: 3, Name: "Charlie", Age: 30},
}
type BatchRequest struct {
Op string `json:"op"` // 操作类型,可以是 add, update 或 delete
Users []User `json:"users"` // 待操作的用户列表
}
func main() {
r := gin.Default()
r.POST("/batch", func(c *gin.Context) {
var batchReq BatchRequest
if err := c.BindJSON(&batchReq); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
switch batchReq.Op {
case "add":
for _, user := range batchReq.Users {
users = append(users, user)
}
case "update":
for _, user := range batchReq.Users {
for i := range users {
if users[i].ID == user.ID {
users[i] = user
break
}
}
}
case "delete":
ids := make(map[int]bool)
for _, user := range batchReq.Users {
ids[user.ID] = true
}
newUsers := make([]User, 0, len(users))
for _, user := range users {
if !ids[user.ID] {
newUsers = append(newUsers, user)
}
}
users = newUsers
default:
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid operation type"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "success"})
})
r.Run(":8080")
}
```
在上述代码中,我们定义了一个 `User` 结构体,包含用户的 ID、姓名和年龄。我们使用一个全局变量 `users` 来保存所有用户的信息。在路由处理函数中,我们首先解析 HTTP 请求中的 JSON 数据,然后根据 `BatchRequest.Op` 的值执行对应的增删改操作。具体来说:
- 如果 `Op` 是 `"add"`,就将请求中的所有用户添加到 `users` 中;
- 如果 `Op` 是 `"update"`,就将请求中的所有用户的信息更新到 `users` 中;
- 如果 `Op` 是 `"delete"`,就将请求中的所有用户从 `users` 中删除。
最后,我们返回一个 JSON 响应,表示操作成功。