request.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. let siteinfo = require('../config');
  2. let util = require('util');
  3. const BASE_URL = siteinfo.siteroot + '/';
  4. const SECRET = siteinfo.miniapp
  5. /*
  6. * 签名认证
  7. */
  8. const getSign = obj => {
  9. let keys = Object.keys(obj)
  10. keys.sort()
  11. let params = []
  12. keys.forEach(e => {
  13. if (!util.isNull(obj[e])) {
  14. params.push(e + '=' + util.trim(obj[e]))
  15. }
  16. })
  17. params.push('key=' + SECRET)
  18. let paramStr = params.join('&')
  19. const md5Util = require('../utils/md5.js')
  20. let signResult = md5Util.md5(paramStr).toUpperCase()
  21. return signResult
  22. }
  23. /**
  24. * 网络请求封装
  25. * @param url url路径名 例:/books
  26. * @param method 请求方式 POST/GET/DELETE等
  27. * @param data 请求参数 string类型
  28. * @param success 成功回调
  29. * @param fail 失败回调
  30. */
  31. function request(url, method, data, success, fail) {
  32. if (!fail && !success && typeof data === 'function') {
  33. success = data;
  34. data = "";
  35. }else if (!fail) {
  36. if (typeof data === 'function') {
  37. fail = success
  38. success = data
  39. data = ""
  40. } else if (typeof data === 'object') {
  41. let sign = getSign(data)
  42. data.sign = sign
  43. } else {
  44. console.log("传递参数类型不正确");
  45. }
  46. }
  47. var wxtask = wx.request({
  48. url: BASE_URL + url,
  49. header: {
  50. 'content-type':'application/json', //默认 application/json :数据序列化
  51. 'request-miniapp': siteinfo.miniapp,
  52. 'request-time': Date.parse(new Date()),
  53. 'request-token': wx.getStorageSync('token'),
  54. 'Cookie':'PHPSESSID='+ wx.getStorageSync('session_id'),
  55. },
  56. method: method,
  57. data: data,
  58. success: function (res) {
  59. switch (res.data.code) {
  60. case 200: //请求成功code
  61. success(res.data)
  62. break
  63. case 204: //成功请求但空内容。
  64. success(res.data)
  65. break
  66. case 301: //永久跳转
  67. wx.showModal({
  68. content: res.data.msg,
  69. success: function (rel) {
  70. if (rel.confirm) {
  71. wx.redirectTo({
  72. url: res.data.url,
  73. fail: function (res) {
  74. wx.showModal({ content: '访问失败', showCancel: false })
  75. }
  76. })
  77. }
  78. }
  79. })
  80. case 302: //临时跳转
  81. wx.showModal({
  82. content: res.data.msg,
  83. success: function (rel) {
  84. if (rel.confirm) {
  85. wx.navigateTo({
  86. url: res.data.url, fail:function (res) {
  87. wx.showModal({content:'访问失败',showCancel: false })
  88. },
  89. })
  90. }
  91. }
  92. })
  93. break
  94. case 401://解决请求用户认证
  95. wx.navigateTo({
  96. url: '/pages/helper/login', fail: function (res) {
  97. wx.showModal({ content: '访问失败', showCancel: false })
  98. }
  99. })
  100. break
  101. case 403://请求失败code弹出提示
  102. wx.showModal({content:res.data.msg,showCancel:false})
  103. break
  104. case 500://请求失败code调整
  105. wx.redirectTo({
  106. url: '/pages/helper/error?msg=' + res.data.msg, fail: function (res) {
  107. wx.showModal({ content: '访问失败', showCancel: false })
  108. }
  109. })
  110. break
  111. }
  112. wx.hideLoading();
  113. },
  114. fail: function (res) {
  115. if (fail) {
  116. fail(res)
  117. }
  118. }
  119. })
  120. return wxtask;
  121. }
  122. /**
  123. * 请求封装-Get
  124. * @param url 请求地址
  125. * @param data 请求参数
  126. * @param success 成功回调
  127. * @param fail 失败回调
  128. * @constructor
  129. *
  130. * 返回值为微信请求实例 用于取消请求
  131. */
  132. function Get(url, data, success, fail) {
  133. return new Promise((resolve, reject) => {
  134. return request(url, "GET", data, success, fail)
  135. })
  136. }
  137. /**
  138. * 请求封装-Post
  139. * @param url 请求地址
  140. * @param data 请求参数
  141. * @param success 成功回调
  142. * @param fail 失败回调
  143. * @constructor
  144. *
  145. * 返回值为微信请求实例 用于取消请求
  146. */
  147. function Post(url, data, success, fail) {
  148. return new Promise((resolve, reject) => {
  149. return request(url, 'POST', data, success, fail)
  150. })
  151. }
  152. /**
  153. * 请求封装-PUT
  154. * @param url 请求地址
  155. * @param data 请求参数
  156. * @param success 成功回调
  157. * @param fail 失败回调
  158. * @constructor
  159. *
  160. * 返回值为微信请求实例 用于取消请求
  161. */
  162. function Put(url, data, success, fail) {
  163. return new Promise((resolve, reject) => {
  164. return request(url, 'PUT', data, success, fail)
  165. })
  166. }
  167. /**
  168. * 请求封装-Delete
  169. * @param url 请求地址
  170. * @param data 请求参数
  171. * @param success 成功回调
  172. * @param fail 失败回调
  173. * @constructor
  174. *
  175. * 返回值为微信请求实例 用于取消请求
  176. */
  177. function Delete(url, data, success, fail) {
  178. return new Promise((resolve, reject) => {
  179. return request(url, 'DELETE', data, success, fail)
  180. })
  181. }
  182. exports.Get = Get;
  183. exports.Post = Post;
  184. exports.Put = Put;
  185. exports.Delete = Delete;