package main import ( "log" "net/http" "git.toowon.com/jimmy/go-commom/http" ) // 用户结构 type User struct { ID int64 `json:"id"` Name string `json:"name"` Email string `json:"email"` } // 获取用户列表 func GetUserList(w http.ResponseWriter, r *http.Request) { // 获取分页参数 page, pageSize := http.GetPaginationParams(r) // 获取查询参数 keyword := http.GetQuery(r, "keyword", "") // 模拟查询数据 users := []User{ {ID: 1, Name: "User1", Email: "user1@example.com"}, {ID: 2, Name: "User2", Email: "user2@example.com"}, } total := int64(100) // 返回分页响应 http.SuccessPage(w, users, total, page, pageSize) } // 创建用户 func CreateUser(w http.ResponseWriter, r *http.Request) { // 解析请求体 var req struct { Name string `json:"name"` Email string `json:"email"` } if err := http.ParseJSON(r, &req); err != nil { http.BadRequest(w, "请求参数解析失败") return } // 参数验证 if req.Name == "" { http.Error(w, 1001, "用户名不能为空") return } // 模拟创建用户 user := User{ ID: 1, Name: req.Name, Email: req.Email, } // 返回成功响应 http.SuccessWithMessage(w, "创建成功", user) } // 获取用户详情 func GetUser(w http.ResponseWriter, r *http.Request) { // 获取查询参数 id := http.GetQueryInt64(r, "id", 0) if id == 0 { http.BadRequest(w, "用户ID不能为空") return } // 模拟查询用户 if id == 1 { user := User{ID: 1, Name: "User1", Email: "user1@example.com"} http.Success(w, user) } else { http.Error(w, 1002, "用户不存在") } } func main() { http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: GetUserList(w, r) case http.MethodPost: CreateUser(w, r) default: http.NotFound(w, "方法不支持") } }) http.HandleFunc("/user", GetUser) log.Println("Server started on :8080") log.Fatal(http.ListenAndServe(":8080", nil)) }