response.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package response
  2. import (
  3. "github.com/gogf/gf/net/ghttp"
  4. )
  5. const (
  6. SuccessCode int = 0
  7. ErrorCode int = -1
  8. )
  9. type Response struct {
  10. // 代码
  11. Code int `json:"code" example:"200"`
  12. // 数据集
  13. Data interface{} `json:"data"`
  14. // 消息
  15. Msg string `json:"msg"`
  16. }
  17. // 返回JSON数据并退出当前HTTP执行函数。
  18. func JsonExit(r *ghttp.Request, code int, msg string, data ...interface{}) {
  19. RJson(r, code, msg, data...)
  20. r.Exit()
  21. }
  22. // 标准返回结果数据结构封装。
  23. // 返回固定数据结构的JSON:
  24. // code: 状态码(200:成功,302跳转,和http请求状态码一至);
  25. // msg: 请求结果信息;
  26. // data: 请求结果,根据不同接口返回结果的数据结构不同;
  27. func RJson(r *ghttp.Request, code int, msg string, data ...interface{}) {
  28. responseData := interface{}(nil)
  29. if len(data) > 0 {
  30. responseData = data[0]
  31. }
  32. result := Response{
  33. Code: code,
  34. Msg: msg,
  35. Data: responseData,
  36. }
  37. r.SetParam("apiReturnRes", result)
  38. r.Response.WriteJson(result)
  39. }
  40. //成功返回JSON
  41. func SusJson(isExit bool, r *ghttp.Request, msg string, data ...interface{}) {
  42. if isExit {
  43. JsonExit(r, SuccessCode, msg, data...)
  44. }
  45. RJson(r, SuccessCode, msg, data...)
  46. }
  47. //失败返回JSON
  48. func FailJson(isExit bool, r *ghttp.Request, msg string, data ...interface{}) {
  49. if isExit {
  50. JsonExit(r, ErrorCode, msg, data...)
  51. }
  52. RJson(r, ErrorCode, msg, data...)
  53. }