mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 10:13:01 +00:00
优化api返回方法
This commit is contained in:
@@ -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
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user