优化api返回方法

This commit is contained in:
linwenxiang
2021-03-17 12:43:52 +08:00
parent 5756286641
commit b1789e5785
3 changed files with 20 additions and 51 deletions
+13 -6
View File
@@ -1,6 +1,7 @@
package middleware
import (
"encoding/json"
"fmt"
"net/http"
"strings"
@@ -21,14 +22,17 @@ import (
// LoggerToFile 日志记录到文件
func LoggerToFile() gin.HandlerFunc {
return func(c *gin.Context) {
// 开始时间
startTime := time.Now()
// 处理请求
c.Next()
// 结束时间
endTime := time.Now()
if c.Request.Method == http.MethodOptions {
return
}
log := api.GetRequestLogger(c)
// 开始时间
startTime := time.Now()
// 处理请求
bd, bl := c.Get("body")
var body = ""
@@ -39,7 +43,12 @@ func LoggerToFile() gin.HandlerFunc {
rt, bl := c.Get("result")
var result = ""
if bl {
result = rt.(string)
rb, err := json.Marshal(rt)
if err != nil {
log.Warnf("json Marshal result error, %s", err.Error())
} else {
result = string(rb)
}
}
st, bl := c.Get("status")
@@ -56,8 +65,6 @@ func LoggerToFile() gin.HandlerFunc {
statusCode := c.Writer.Status()
// 请求IP
clientIP := c.ClientIP()
// 结束时间
endTime := time.Now()
// 执行时间
latencyTime := endTime.Sub(startTime)
// 日志格式
+5 -43
View File
@@ -1,16 +1,14 @@
package apis
import (
"encoding/json"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/logger"
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"gorm.io/gorm"
"go-admin/common/models"
)
type Api struct {
@@ -33,56 +31,20 @@ func (e *Api) GetOrm(c *gin.Context) (*gorm.DB, error) {
// Error 通常错误数据处理
func (e *Api) Error(c *gin.Context, code int, err error, msg string) {
var res models.Response
if err != nil {
res.Msg = err.Error()
}
if msg != "" {
res.Msg = msg
}
res.RequestId = pkg.GenerateMsgIDFromContext(c)
Return := res.ReturnError(code)
e.setResult(c, Return, res.RequestId, code)
c.AbortWithStatusJSON(http.StatusOK, Return)
response.Error(c, code, err, msg)
}
// OK 通常成功数据处理
func (e *Api) OK(c *gin.Context, data interface{}, msg string) {
var res models.Response
res.Data = data
if msg != "" {
res.Msg = msg
}
res.RequestId = pkg.GenerateMsgIDFromContext(c)
Return := res.ReturnOK()
e.setResult(c, Return, res.RequestId, 200)
c.AbortWithStatusJSON(http.StatusOK, Return)
response.OK(c, data, msg)
}
// PageOK 分页数据处理
func (e *Api) PageOK(c *gin.Context, result interface{}, count int, pageIndex int, pageSize int, msg string) {
var res models.Page
res.List = result
res.Count = count
res.PageIndex = pageIndex
res.PageSize = pageSize
e.OK(c, res, msg)
response.PageOK(c, result, count, pageIndex, pageSize, msg)
}
// Custom 兼容函数
func (e *Api) Custom(c *gin.Context, data gin.H) {
msgID := pkg.GenerateMsgIDFromContext(c)
Return := data
e.setResult(c, Return, msgID, 200)
c.AbortWithStatusJSON(http.StatusOK, Return)
}
func (e *Api) setResult(c *gin.Context, Return interface{}, msgID string, status int) {
requestLogger := e.GetLogger(c)
jsonStr, err := json.Marshal(Return)
if err != nil {
requestLogger.Debugf("setResult error: %#v", msgID, err.Error())
}
c.Set("result", string(jsonStr))
c.Set("status", status)
response.Custum(c, data)
}
+1 -1
View File
@@ -8,7 +8,7 @@ require (
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5
github.com/casbin/casbin/v2 v2.25.1
github.com/gin-gonic/gin v1.6.3
github.com/go-admin-team/go-admin-core v1.3.1-0.20210316090839-b4261653fe46
github.com/go-admin-team/go-admin-core v1.3.0-rc.0.0.20210317043714-3dd2b8cbf8cc
github.com/google/uuid v1.2.0
github.com/mojocn/base64Captcha v1.3.1
github.com/mssola/user_agent v0.5.2