request.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import * as $auth from "./auth"
  2. import BASE_URL from './config.js'
  3. import qs from 'qs'
  4. function error(res){
  5. if (res.statusCode === 408 || res.statusCode === 401) {// 需要重新登录
  6. $auth.removeUserToken();
  7. uni.showToast({
  8. title: res.data,
  9. icon:"none"
  10. })
  11. setTimeout(function(){
  12. uni.reLaunch({
  13. url: '/pages/login/login'
  14. });
  15. }, 2000)
  16. }else if(res.statusCode === 404){
  17. uni.showToast({
  18. title:"404,路径找不到:"+res.data.path,
  19. icon:"none"
  20. })
  21. }else if(res.statusCode === 503){
  22. uni.showToast({
  23. title:"服务不可用",
  24. icon:"none"
  25. })
  26. }else if(res.statusCode === 504){
  27. uni.showToast({
  28. title:"网络连接错误",
  29. icon:"none"
  30. })
  31. }else{
  32. uni.showToast({
  33. title:res.data,
  34. icon:"none"
  35. })
  36. }
  37. }
  38. export function request(body){
  39. let {url,method,data,header, params, responseType} = body
  40. data = data || params || {};
  41. header = header || {'Content-Type': 'application/json; charset=utf-8'}
  42. method = method.toUpperCase() || "GET";
  43. responseType = responseType || "text"
  44. let token = $auth.getUserToken();
  45. if(token){
  46. header.token = token; // 获取token值
  47. }
  48. if(method === 'POST' && header['Content-Type'] === 'application/x-www-form-urlencoded; charset=utf-8'){
  49. data = qs.stringify(data, { allowDots: true, arrayFormat: 'indices' })
  50. }else if(method === 'GET' || method === 'DELETE' || method === 'PUT'){
  51. url = url + '?' + qs.stringify(data, { allowDots: true, arrayFormat: 'indices' })
  52. data = null
  53. }
  54. let promise = new Promise((resolve,reject)=>{
  55. uni.request({
  56. url: BASE_URL + url,
  57. header:header,
  58. data: data,
  59. method: method,
  60. responseType: responseType,
  61. success: res => {
  62. if(res && res.statusCode !== 200){
  63. error(res);
  64. reject(res)
  65. }
  66. resolve(res);
  67. },
  68. fail: (res) => {
  69. uni.hideLoading();
  70. error(res);
  71. reject(res);
  72. },
  73. complete: () => {
  74. }
  75. });
  76. })
  77. return promise;
  78. }
  79. // 单文件上传
  80. export function upload(url, filePath,filename, formData,header,success,fail){
  81. let name = filename || 'file';
  82. header = header || {};
  83. let token = $auth.getUserToken();
  84. if(token){
  85. header.token = token; // 获取token值
  86. }
  87. let promise = new Promise((resolve,reject)=>{
  88. uni.uploadFile({
  89. url: BASE_URL + url,
  90. filePath:filePath,
  91. name: 'file',
  92. formData: formData || {},
  93. header:header,
  94. success: res => {
  95. resolve(res);
  96. },
  97. fail: (res) => {
  98. uni.hideLoading();
  99. let err = JSON.parse(res);
  100. error(err);
  101. reject(err);
  102. },
  103. complete: () => {
  104. }
  105. });
  106. })
  107. return promise;
  108. }
  109. export function download(url,header,success,fail){
  110. header = header || {};
  111. let token = $auth.getUserToken();
  112. if(token){
  113. header.token = token; // 获取token值
  114. }
  115. if(!url){
  116. return;
  117. }
  118. let downloadTask = uni.downloadFile({
  119. url: url,
  120. success: (res) => {
  121. if(res.statusCode===200){
  122. if(success){
  123. success.call(null,res);
  124. }
  125. }else{
  126. if(fail){
  127. fail.call(null,res);
  128. }
  129. }
  130. },
  131. fail:(res) => {
  132. let err = JSON.parse(res);
  133. error(err);
  134. if(fail){
  135. fail.call(null,err)
  136. }
  137. },
  138. complete: () => {
  139. }
  140. });
  141. return downloadTask;
  142. }
  143. export default request