package response import ( "encoding/json" "net/http" ) // Body 统一响应体 type Body struct { Code int `json:"code"` Msg string `json:"msg"` Data interface{} `json:"data,omitempty"` } func writeJSON(w http.ResponseWriter, body *Body) { w.Header().Set("Content-Type", "application/json; charset=utf-8") w.WriteHeader(http.StatusOK) _ = json.NewEncoder(w).Encode(body) } // OkWithData 成功响应(带数据) func OkWithData(w http.ResponseWriter, data interface{}) { writeJSON(w, &Body{Code: 200, Msg: "success", Data: data}) } // Ok 成功响应(无数据) func Ok(w http.ResponseWriter) { writeJSON(w, &Body{Code: 200, Msg: "success"}) } // OkWithMsg 成功响应(自定义消息) func OkWithMsg(w http.ResponseWriter, msg string) { writeJSON(w, &Body{Code: 200, Msg: msg}) } // Fail 失败响应 func Fail(w http.ResponseWriter, msg string) { writeJSON(w, &Body{Code: 400, Msg: msg}) } // FailWithCode 失败响应(自定义错误码) func FailWithCode(w http.ResponseWriter, code int, msg string) { writeJSON(w, &Body{Code: code, Msg: msg}) } // NoAuth 未授权响应 func NoAuth(w http.ResponseWriter, msg string) { writeJSON(w, &Body{Code: 401, Msg: msg}) } // PageResult 分页结果 type PageResult struct { List interface{} `json:"list"` Total int64 `json:"total"` Current int `json:"current"` Size int `json:"size"` } // OkWithPage 分页成功响应 func OkWithPage(w http.ResponseWriter, list interface{}, total int64, current, size int) { OkWithData(w, PageResult{ List: list, Total: total, Current: current, Size: size, }) }