response.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package middleware
  2. import (
  3. "github.com/gogf/gf/v2/errors/gcode"
  4. "github.com/gogf/gf/v2/errors/gerror"
  5. "github.com/gogf/gf/v2/net/ghttp"
  6. "gof_ppw_api/api"
  7. "net/http"
  8. )
  9. type DefaultHandlerResponse struct {
  10. Code int `json:"code" dc:"响应状态码"`
  11. Message string `json:"msg" dc:"响应信息"`
  12. Data interface{} `json:"data" dc:"响应数据"`
  13. }
  14. func Response(r *ghttp.Request) {
  15. r.Middleware.Next()
  16. // fmt.Println("using res middleware after..")
  17. if r.Response.BufferLength() > 0 {
  18. return
  19. }
  20. var (
  21. msg string
  22. err = r.GetError()
  23. res = r.GetHandlerResponse()
  24. code = gerror.Code(err)
  25. fRes interface{}
  26. )
  27. if err != nil {
  28. if code == gcode.CodeNil {
  29. code = gcode.CodeInternalError
  30. }
  31. msg = err.Error()
  32. fRes = struct{}{}
  33. } else if r.Response.Status > 0 && r.Response.Status != http.StatusOK {
  34. msg = http.StatusText(r.Response.Status)
  35. switch r.Response.Status {
  36. case http.StatusNotFound:
  37. code = gcode.CodeNotFound
  38. case http.StatusForbidden:
  39. code = gcode.CodeNotAuthorized
  40. default:
  41. code = gcode.CodeUnknown
  42. }
  43. fRes = struct{}{}
  44. } else {
  45. code = gcode.CodeOK
  46. fRes = res.(*api.CommonRes).Data
  47. }
  48. r.Response.WriteJsonExit(DefaultHandlerResponse{
  49. Code: code.Code(),
  50. Message: msg,
  51. Data: fRes,
  52. })
  53. }