Files
nl_cms-api/internal/middleware/response.go
2025-07-29 12:45:07 +08:00

55 lines
1.0 KiB
Go

package middleware
import (
"cms-api/internal/model"
"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// ResponseHandler 统一响应处理中间件
func ResponseHandler(r *ghttp.Request) {
r.Middleware.Next()
// 如果已经有响应内容,则不处理
if r.Response.BufferLength() > 0 {
return
}
var (
ctx = r.Context()
res = r.GetHandlerResponse()
err = r.GetError()
msg = "操作成功"
data interface{}
)
var responseCode int = 200
if err != nil {
errCode := gerror.Code(err)
if errCode != gcode.CodeNil {
responseCode = int(errCode.Code())
} else {
responseCode = 500
}
msg = err.Error()
g.Log().Error(ctx, "请求处理错误:", err)
} else if r.Response.Status >= 400 {
msg = "请求失败"
responseCode = r.Response.Status
} else {
data = res
}
response := &model.Response{
Code: responseCode,
Message: msg,
Data: data,
}
r.Response.WriteJsonExit(response)
}