package core import ( "aufs/db" "aufs/proto/pb" "encoding/base64" "encoding/json" "fmt" "net/http" "strconv" "google.golang.org/protobuf/proto" ) // 输出的结构 type ScJson struct { Message string `json:"message"` Status int `json:"status"` Data []db.StServerInfo `json:"data"` } // 系统设置 func Settdb(w http.ResponseWriter, r *http.Request) { // 数据库初始化 db.Init() sclst := db.GetlScList() // scresp := ScJson{ Message: "success", Status: 200, Data: sclst, } uCorsHadler(w, r) json.NewEncoder(w).Encode(scresp) } // 获取详情 func Scdetail(w http.ResponseWriter, r *http.Request) { // 获取参数 id := r.URL.Query().Get("id") // 转换为整数 scid, err := strconv.Atoi(id) if err != nil { // 处理转换错误 } // 数据库初始化 db.Init() // 获取详情 scinfo := db.GetServerInfo(int16(scid)) // 输出 scresp := ScJson{ Message: "success", Status: 200, Data: []db.StServerInfo{scinfo}, } uCorsHadler(w, r) json.NewEncoder(w).Encode(scresp) } // 编辑 func Scedit(w http.ResponseWriter, r *http.Request) { // 使用post方式 if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } else { // 设置响应头为JSON格式 w.Header().Set("Content-Type", "application/json") w.Header().Set("Access-Control-Allow-Origin", "*") // 允许跨域(生产环境需指定具体域名) w.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS") w.Header().Set("Access-Control-Allow-Headers", "Content-Type") // 处理预检请求 if r.Method == http.MethodOptions { w.WriteHeader(http.StatusOK) return } // 获取到body的内容 buf := make([]byte, 1024) n, _ := r.Body.Read(buf) // 操作完后关闭body defer r.Body.Close() // 转换为字符串 base64Str := string(buf[:n]) // 解码base64 decodedData, err := base64.StdEncoding.DecodeString(base64Str) if err != nil { return } // base64转为proto对象 var sc pb.ServiceInfo err = proto.Unmarshal(decodedData, &sc) if err != nil { return } // fmt.Printf("sc: %v\n", sc) // scjson, _ := json.Marshal(sc) fmt.Printf("scjson: %v\n", scjson) // fmt.Printf("sc: %v", sc) // 数据库初始化 // db.Init() // 编辑 // ret := db.UpdateServerInfo(scinfo) json.NewEncoder(w).Encode(map[string]string{ "message": "success", "status": "200", "data": string(scjson), // "data": "test string", }) } }