dockerfiles/anylink/server/admin/resp.go

65 lines
1.3 KiB
Go

package admin
import (
"encoding/json"
"fmt"
"net/http"
"runtime"
"github.com/bjdgyc/anylink/base"
)
type Resp struct {
Code int `json:"code"`
Msg string `json:"msg"`
Location string `json:"location"`
Data interface{} `json:"data"`
}
func respHttp(w http.ResponseWriter, respCode int, data interface{}, errS ...interface{}) {
resp := Resp{
Code: respCode,
Msg: "success",
Data: data,
}
_, file, line, _ := runtime.Caller(2)
resp.Location = fmt.Sprintf("%v:%v", file, line)
if respCode != 0 {
resp.Msg = ""
if v, ok := RespMap[respCode]; ok {
resp.Msg += v
}
if len(errS) > 0 {
resp.Msg += fmt.Sprint(errS...)
}
}
b, err := json.Marshal(resp)
if err != nil {
base.Error(err, resp)
}
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
_, err = w.Write(b)
if err != nil {
base.Error(err)
}
// 记录返回数据
// logger.Category("response").Debug(string(b))
}
func RespSucess(w http.ResponseWriter, data interface{}) {
respHttp(w, 0, data, "")
}
func RespError(w http.ResponseWriter, respCode int, errS ...interface{}) {
respHttp(w, respCode, nil, errS...)
}
func RespData(w http.ResponseWriter, data interface{}, err error) {
respHttp(w, http.StatusOK, data, "")
}