github.com/gogf/gf@v1.16.9/net/ghttp/ghttp_middleware_handler_response.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package ghttp 8 9 import ( 10 "github.com/gogf/gf/errors/gcode" 11 "github.com/gogf/gf/errors/gerror" 12 "github.com/gogf/gf/internal/intlog" 13 ) 14 15 type DefaultHandlerResponse struct { 16 Code int `json:"code"` 17 Message string `json:"message"` 18 Data interface{} `json:"data"` 19 } 20 21 // MiddlewareHandlerResponse is the default middleware handling handler response object and its error. 22 func MiddlewareHandlerResponse(r *Request) { 23 r.Middleware.Next() 24 var ( 25 err error 26 res interface{} 27 internalErr error 28 ) 29 res, err = r.GetHandlerResponse() 30 if err != nil { 31 code := gerror.Code(err) 32 if code == gcode.CodeNil { 33 code = gcode.CodeInternalError 34 } 35 internalErr = r.Response.WriteJson(DefaultHandlerResponse{ 36 Code: code.Code(), 37 Message: err.Error(), 38 Data: nil, 39 }) 40 if internalErr != nil { 41 intlog.Error(r.Context(), internalErr) 42 } 43 return 44 } 45 internalErr = r.Response.WriteJson(DefaultHandlerResponse{ 46 Code: gcode.CodeOK.Code(), 47 Message: "", 48 Data: res, 49 }) 50 if internalErr != nil { 51 intlog.Error(r.Context(), internalErr) 52 } 53 }