1 Star 0 Fork 0

kade / librarys

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
send.go 1.82 KB
一键复制 编辑 原始数据 按行查看 历史
kade 提交于 2024-03-26 16:58 . v1
package response
import (
"encoding/json"
"fmt"
"net/http"
"gitee.com/go-kade/librarys/exception"
)
// Failed use to response error messge
func Failed(w http.ResponseWriter, err error, opts ...Option) {
var (
errCode int
httpCode int
ns string
reason string
data interface{}
meta interface{}
)
switch t := err.(type) {
case *exception.APIException:
errCode = t.ErrorCode()
reason = t.GetReason()
data = t.GetData()
meta = t.GetMeta()
httpCode = t.GetHttpCode()
ns = t.GetNamespace()
default:
errCode = exception.UnKnownException
}
if httpCode == 0 {
httpCode = http.StatusInternalServerError
}
resp := Data{
Code: &errCode,
Namespace: ns,
Reason: reason,
Message: err.Error(),
Data: data,
Meta: meta,
}
for _, opt := range opts {
opt.Apply(&resp)
}
// set response heanders
w.Header().Set("Content-Type", "application/json")
// if marshal json error, use string to response
respByt, err := json.Marshal(resp)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
errMSG := fmt.Sprintf(`{"status":"error", "message": "encoding to json error, %s"}`, err)
w.Write([]byte(errMSG))
return
}
w.WriteHeader(httpCode)
w.Write(respByt)
}
// Success use to response success data
func Success(w http.ResponseWriter, data interface{}, opts ...Option) {
c := 0
resp := Data{
Code: &c,
Message: "",
Data: data,
}
for _, opt := range opts {
opt.Apply(&resp)
}
// set response heanders
w.Header().Set("Content-Type", "application/json")
respBytes, err := json.Marshal(resp)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
errMSG := fmt.Sprintf(`{"status":"error", "message": "encoding to json error, %s"}`, err)
w.Write([]byte(errMSG))
return
}
w.WriteHeader(http.StatusOK)
w.Write(respBytes)
}
1
https://gitee.com/go-kade/librarys.git
git@gitee.com:go-kade/librarys.git
go-kade
librarys
librarys
70cb23a27fa4

搜索帮助